我有一个名为User的模型,但是Sequelize会在我试图保存到数据库中时查找表USERS。有人知道如何设置Sequelize来使用单表名称吗?谢谢。
发布于 2014-04-20 20:25:21
可以使用属性freezeTableName
的docs状态。
请看下面的示例:
var Bar = sequelize.define('Bar', { /* bla */ }, {
// don't add the timestamp attributes (updatedAt, createdAt)
timestamps: false,
// don't delete database entries but set the newly added attribute deletedAt
// to the current date (when deletion was done). paranoid will only work if
// timestamps are enabled
paranoid: true,
// don't use camelcase for automatically added attributes but underscore style
// so updatedAt will be updated_at
underscored: true,
// disable the modification of tablenames; By default, sequelize will automatically
// transform all passed model names (first parameter of define) into plural.
// if you don't want that, set the following
freezeTableName: true,
// define the table's name
tableName: 'my_very_custom_table_name'
})
发布于 2016-01-01 18:30:42
虽然公认的答案是正确的,但您可以对所有表执行一次操作,而不必为每个表单独执行此操作。您只需将一个类似的options对象传入Sequelize构造函数,如下所示:
var Sequelize = require('sequelize');
//database wide options
var opts = {
define: {
//prevent sequelize from pluralizing table names
freezeTableName: true
}
}
var sequelize = new Sequelize('mysql://root:123abc@localhost:3306/mydatabase', opts)
现在,在定义实体时,不必指定freezeTableName: true
var Project = sequelize.define('Project', {
title: Sequelize.STRING,
description: Sequelize.TEXT
})
发布于 2020-10-22 10:59:29
您可以直接这样做,而不是像下面这样在定义它之后在每个表中指定它
var db_instance = new Sequelize(config.DB.database, config.DB.username, config.DB.password, {
host: config.DB.host,
dialect: config.DB.dialect,
define: {
timestamps: true,
freezeTableName: true
},
logging: false
});
或
您也可以直接告诉Sequelize表的名称:
sequelize.define('User', {
// ... (attributes)
}, {
tableName: 'Employees'
});
您可以在sequelize.js的文档中看到这两种方法
Doc。与freezeTableName
相关的sequelize.js
https://stackoverflow.com/questions/21114499
复制