19

我有一个给定的数据库,其中包含长而繁琐的列名。有没有办法将表名映射到模型中更短、更具描述性的 propertyNames ?就像是

var Employee = sql.define('Employee', {
    id : {type : Sequelize.INTEGER , primaryKey: true, map : "veryLongNameForJustTheId"}
},{
     tableName: 'cumbersomeTableName',
     timestamps: false
});;
4

3 回答 3

49
id : {
    field: 'some_long_name_that_is_terrible_thanks_dba_guy',
    type : Sequelize.INTEGER ,
    primaryKey: true
}

指定一个“字段”属性......就像那个^

于 2015-11-16T14:40:23.517 回答
3

您可以通过将名称作为第一个参数提供给 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'
}
);
于 2015-08-08T01:05:45.317 回答
1

到目前为止,我发现最好的解决方案是使用 getter 和 setter。

但是,它们不会影响 object.values 或 object.toJSON() 中的结果。如果您想使用这些方法,您将需要自己的序列化方法。

于 2013-10-17T16:19:25.243 回答