gpt4 book ai didi

node.js - 重构后,Sequelize 不会读取新的模型名称(删除最终模型名称中的 s)

转载 作者:行者123 更新时间:2023-12-03 22:26:42 25 4
gpt4 key购买 nike

我有一个内置 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 into user



为什么会发生这种情况?

最佳答案

这是 default behavior - Sequelize 自动将模型名称转换为复数。为了禁用你应该在模型定义中卡住表名(或者像你实际做的那样显式设置表名):

freezeTableName: true,

关于node.js - 重构后,Sequelize 不会读取新的模型名称(删除最终模型名称中的 s),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57639993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com