egg集成mysql和MongoDB存在的一些問題

假設你已經按照官網,完成了所有的配置那么你也可能會遇到跟我一樣的問題

mongoose is undefined

問題:

在plugin中配置mysql后,會出現mongoose.Schema中的mongoose is undefined,這個問題,是因為,在引入sequelize后,它會跟mongoose爭取model文件夾的權限(我是這么理解的,然后mongoose打不贏,就成了undefined了)

解決方案:

在我們的config配置文件中,對配置進行修改,添加baseDirdelegate來指定對應的model目錄

  config.sequelize = {
    dialect: 'mysql',
    host: '127.0.0.1',
    port: 3306,
    database: 'test',
    username: 'test',
    password: '123456',
    delegate: 'modelmysql',
    baseDir: 'modelmysql',
    define: {
      timestamps: false
    }
  };

查詢mysql的時候,表會帶上一個復數的s

問題:當我進行查詢全部的是,比如,我在model中寫的表是user,然后我進行查詢,實際查詢的sql會變成select * from users,這樣的話,就會報錯,找不到users表

解決方案:在我們的model中需要進行一個配置:freezeTableName: true,也就是Model 對應的表名將與model名相同,當然,這個也可以在全局進行配置

查詢mysql的時候,會帶有其他的字段

問題:nodejs.SequelizeDatabaseError: Unknown column 'created_at' in 'field list',在配置好model的對應后,又出現了一個多余字段的錯誤,實際的sql是:

SELECT `uid`, `username`, `spellname`, `created_at` AS `createdAt`, `updated_at` AS `updatedAt` FROM `sys_user` AS `sys_user`;

解決方案:這里我們需要在config中配置不帶時間戳也就是加上這么一個

  config.sequelize = {
    dialect: 'mysql',
    host: '127.0.0.1',
    port: 3306,
    define: {
      timestamps: false
    }
  };

到這就基本完成了,可以愉快的進行數據的查詢了。但是我覺得,node中的model還需要配置字段的長度,我也是醉了,在使用spring boot進行服務端開發(fā)的時候,就不需要這個操作,而且,用idea進行服務端開發(fā),會有各種數據庫的字段提示,node我覺得,還是進行基于MongoDB的數據庫進行開發(fā)吧。。。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Mongodb 配置選項 通常在mongod.conf中 配置文件 設置了配置文件后啟動時以自定義的配置文件啟動:...
    AkaTBS閱讀 1,150評論 0 6
  • 今天看到一位朋友寫的mysql筆記總結,覺得寫的很詳細很用心,這里轉載一下,供大家參考下,也希望大家能關注他原文地...
    信仰與初衷閱讀 4,835評論 0 30
  • 一、MySQL優(yōu)化 MySQL優(yōu)化從哪些方面入手: (1)存儲層(數據) 構建良好的數據結構??梢源蟠蟮奶嵘覀僑...
    寵辱不驚丶歲月靜好閱讀 2,655評論 1 8
  • 今天來咨詢兩位青年女性,因為長期的便秘,深受其苦,前來就問我便秘咋辦。我問便秘的患者時,都會詢問其既往的治療史,包...
    Cherry_520閱讀 1,431評論 0 0
  • 今日開心的事兒:1.太陽還在,享受最后 一天的大晴天,明天被打回流浪太陽天。 2.專業(yè)書第三章瀏覽完畢,選擇題第一...
    肉奚閱讀 157評論 0 1

友情鏈接更多精彩內容