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

标签 node.js express sequelize.js

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

相关文章:

node.js - 为什么使用不同文件的 Express 路由不起作用?

javascript - 无法删除 mongoose 中的帖子

sequelize.js - 如何在两个不同的 ORM 中使用事务

node.js - 如何查看coinbase交易事件

javascript - 为什么作者在文件前使用波形符?

node.js - 如何使用KoaJS读取正在上传的文件?

node.js - config.use_env_variable、Object.keys 和 readdirSync 如何在 node js 代码中查找模型有用?

node.js - Circleci, SequelizeConnectionError : no pg_hba. 主机配置项

postgresql - 如何从 Sequelize 中的关联表中获取数据

javascript - 如何在模块导出函数中返回 SQS 队列列表?