2013-07-31 2 views
8

zuzuordnen Ich habe eine gegebene Datenbank mit langen, sperrigen Spaltennamen. Gibt es keine Möglichkeit, die Tabellennamen kürzeren und aussagekräftigeren propertyNames im Modell zuzuordnen? so etwas wieGibt es keine Option, um den Spaltennamen im Sequelize-Modell

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

Antwort

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

Geben Sie ein 'Feld' Attribut ... Wie die^

+1

Dies ist die offizielle Antwort. Das Dokument hat ein Beispiel: http://docs.sequelizejs.com/de/latest/docs/models-definition/#definition –

+0

Dies sollte die akzeptierte Antwort sein. –

1

Bisher ist die beste Lösung I found dies zu tun ist Getter und Setter zu verwenden.

Sie werden sich jedoch nicht auf Ergebnisse in object.values ​​oder object.toJSON() auswirken. Sie benötigen Ihre eigenen Serialisierungsmethoden, wenn Sie diese verwenden möchten.

2

Sie können einen Tabellennamen angeben, indem Sie den Namen als ersten Parameter für den Aufruf define() angeben. Zum Beispiel:

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' 
} 
); 
Verwandte Themen