排序表名称更改

ana*_*der 5 sequelize.js

已重命名表,从usersuser在MySQL数据库。在Express运行中,Sequelize并为旧users表创建了一个架构。将表重命名并将代码中的所有内容都从更改usersuser,即使表名在架构中已更新,Sequelize仍在寻找专门命名users的表。

User = db.sequelize.define('user', {
  first_name: Sequelize.STRING,
  last_name: Sequelize.STRING,
  email: Sequelize.STRING,
  password: Sequelize.STRING,
  role: Sequelize.STRING,
  created_at: Sequelize.DATE,
  updated_at: Sequelize.DATE
});
Run Code Online (Sandbox Code Playgroud)

尝试运行此命令以使用产生的表覆盖该表,Sequelize但仍创建了一个名为users

User.sync({force: true}).then(() => {
  // Table created
  return User.create({
    firstName: 'test',
    lastName: 'test',
    email: 'test@example.com',
    password: 'password'
  });
});
Run Code Online (Sandbox Code Playgroud)

其他人也经历过同样的经历吗?我还有其他配置吗?这是我创建第一个表时首先要做的。

小智 5

默认情况下,freezeTableName: true对表名称进行复数化,设置为更改这种行为。

User = db.sequelize.define('user', {
    first_name: Sequelize.STRING,
    last_name: Sequelize.STRING,
    email: Sequelize.STRING,
    password: Sequelize.STRING,
    role: Sequelize.STRING,
    created_at: Sequelize.DATE,
    updated_at: Sequelize.DATE
}, {
    freezeTableName: true
});
Run Code Online (Sandbox Code Playgroud)


Dac*_*nny 2

我已经使用 Sequelize 框架很多年了,但我很确定该框架默认有复数表名的概念。根据记忆,需要提供配置来create防止这种情况 - 因此与非复数表名称结合使用,您还需要指定freezeTableName: true.

看起来文档是这样说的:

http://docs.sequelizejs.com/manual/tutorial/models-definition.html#configuration