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
}

「field」属性を指定して…そんな感じで^

于 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

これまでのところ、これを行うために見つけた最善の解決策は、ゲッターとセッターを使用することです。

ただし、object.values または object.toJSON() の結果には影響しません。これらを使用する場合は、独自のシリアル化メソッドが必要になります。

于 2013-10-17T16:19:25.243 に答える