假設你已經按照官網,完成了所有的配置那么你也可能會遇到跟我一樣的問題
mongoose is undefined
問題:
在plugin中配置mysql后,會出現mongoose.Schema中的mongoose is undefined,這個問題,是因為,在引入sequelize后,它會跟mongoose爭取model文件夾的權限(我是這么理解的,然后mongoose打不贏,就成了undefined了)
解決方案:
在我們的config配置文件中,對配置進行修改,添加baseDir和delegate來指定對應的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ā)吧。。。