我有一个内置 Express 和 Sequelize ORM 的后端应用程序。
这是我的代码;
user.js(模型)
'use strict';
module.exports = (sequelize, DataTypes) => {
const user = sequelize.define('user', {
username: DataTypes.STRING,
}, {
// tableName: 'user'
});
user.associate = function(models) {
// associations can be defined here
};
return user;
};
user.js( Controller ):
const User = require('../models').user;
module.exports = {
getUser: function (req, res) {
User.findAll().then(value => {
res.json(value);
})
}
}
当我启动项目时,它返回错误
Unhandled rejection SequelizeDatabaseError: relation "users" does not exist
。正如您在上面看到的代码,我将模型设置为 user
而不是 users
,并且数据库中的表也是 user 而不是 users 。只有在模型文件中添加 tableName: 'user'
才能正常工作。NOTE: By the default, when I do create model with sequelize, the file name and model define is
users
, but I refactor file name and define inside model intouser
为什么会发生这种情况?
最佳答案
这是 default behavior - Sequelize
自动将模型名称转换为复数。为了禁用你应该在模型定义中卡住表名(或者像你实际做的那样显式设置表名):
freezeTableName: true,
关于node.js - 重构后,Sequelize 不会读取新的模型名称(删除最终模型名称中的 s),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57639993/