续集表名更改

时间:2018-04-17 19:19:04

标签: sequelize.js

已在MySQL数据库中将表从users重命名为user。在Express我正在运行Sequelize并为旧users表创建了一个架构。重命名表后,代码中的所有内容都从users更改为userSequelize仍在查找名为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
});

尝试运行此操作以使用Sequelize生成的表格覆盖表格,并且仍然创建了一个名为users

的表格
User.sync({force: true}).then(() => {
  // Table created
  return User.create({
    firstName: 'test',
    lastName: 'test',
    email: 'test@example.com',
    password: 'password'
  });
});

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

3 个答案:

答案 0 :(得分: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
});

答案 1 :(得分:1)

自从我使用Sequelize框架以来已经好几年了,但我非常确定该框架默认具有多个表名的概念。 从内存中,需要在create中提供配置以防止这种情况发生 - 因此,结合您的非复数表格名称,您还需要指定freezeTableName: true

看起来文档说明了这一点:

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

答案 2 :(得分:0)

最近的续集版本允许您执行此操作

<div class="w-100" style="background-color: white; z-index: 0;">
        <div class=" d-flex justify-content-center pt-2">
                {{ $products->links() }}
        </div>
    </div>