没有选项可以在sequelize模型中映射列名

时间:2013-07-31 06:50:56

标签: mysql node.js sequelize.js

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

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

3 个答案:

答案 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()中的结果。如果要使用这些方法,则需要自己的序列化方法。

相关问题