已重命名表,从users到user在MySQL数据库。在Express运行中,Sequelize并为旧users表创建了一个架构。将表重命名并将代码中的所有内容都从更改users为user,即使表名在架构中已更新,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)
我已经使用 Sequelize 框架很多年了,但我很确定该框架默认有复数表名的概念。根据记忆,需要提供配置来create防止这种情况 - 因此与非复数表名称结合使用,您还需要指定freezeTableName: true.
看起来文档是这样说的:
http://docs.sequelizejs.com/manual/tutorial/models-definition.html#configuration
| 归档时间: |
|
| 查看次数: |
3109 次 |
| 最近记录: |