我有一个包含长而繁琐的列名的给定数据库。有没有办法将表名映射到模型中更短和更具描述性的propertyNames?
之类的东西var Employee = sql.define('Employee', {
id : {type : Sequelize.INTEGER , primaryKey: true, map : "veryLongNameForJustTheId"}
},{
tableName: 'cumbersomeTableName',
timestamps: false
});;
答案 0 :(得分:25)
id : {
field: 'some_long_name_that_is_terrible_thanks_dba_guy',
type : Sequelize.INTEGER ,
primaryKey: true
}
指定'字段'属性......就像那个^
答案 1 :(得分:2)
您可以通过将名称作为define()调用的第一个参数来指定表名。例如:
var User = sequelize.define(
'a_long_cumbersone_users_table_name',
{
id: {
type: Sequelize.INTEGER,
primaryKey: true
},
name: {
type: Sequelize.STRING
},
email: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
},
rememberToken: {
type: Sequelize.STRING,
field: 'remember_token'
}
},
{
underscored: true,
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
}
);
答案 2 :(得分:1)
到目前为止,执行此操作的最佳解决方案I found是使用getter和setter。
然而,它们不会影响object.values或object.toJSON()中的结果。如果要使用这些方法,则需要自己的序列化方法。