2
我發現當我用Sequelize做一個查詢時,'Id'被添加到列名的末尾,但我不確定如何指示Sequelize不這樣做?如何防止Sequelize將'Id'添加到列名稱中?
我已經創建了Sequelize的實體數據模型,如下:
function initializeDataModel(sequelize) {
var dataModel = { };
dataModel.Playlist = this.sequelize.define('playlist', {
name: Sequelize.STRING,
});
dataModel.PlaylistEntry = this.sequelize.define('playlist_entry', {
playlist: {
name: 'playlist',
type: Sequelize.INTEGER,
references: {
// This is a reference to another model
model: dataModel.Playlist,
// This is the column name of the referenced model
key: 'id'
// This declares when to check the foreign key constraint. PostgreSQL only.
//deferrable: Sequelize.Deferrable.INITIALLY_IMMEDIATE
}
},
track: Sequelize.INTEGER
});
dataModel.PlaylistEntry.belongsTo(
dataModel.Playlist,
{ as: 'Playlist', foreignKey: { name: 'playlist' }});
dataModel.Playlist.hasMany(dataModel.PlaylistEntry);
return dataModel;
}
在 'playlist_entry' 表中的字段(在MariaDB的)如下:
- ID:INT( 11)
- 播放列表:INT(11)
- 軌道:INT(11)
我執行查詢如下:
eagerIncludes.push(this.dataModel.PlaylistEntry);
this.dataModel.Playlist.find({
where: { id: playlistId },
limit: limit,
offset: offset,
include: eagerIncludes
}).then(function (results) {
callback(results, options, undefined);
}).catch(function (error) {
callback(undefined, options, error);
});
這導致:
ER_BAD_FIELD_ERROR: Unknown column 'playlist_entries.playlistId' in 'field list'
任何建議,將不勝感激。更改數據庫中的列名不是一個選項。
請注意,嘗試使用'eager includes'時出現此問題。
值得一提的是,Sequelize增加'Id'的關係屬性,它是一個記錄和區分關係密鑰。我不確定你可以在沒有引入嚴重問題的情況下使用相同的名稱。 – tadman
如果我能夠在'playlist_entry'表中將字段名稱更改爲'playlist_id',我應該做些什麼改變才能使其發揮作用? –
通常最好遵守Sequelize的約定,除非你不能改變模式。如有必要,可以使用選項來調整默認值,但您無法做的一件事是使用相同名稱存儲屬性和列。 – tadman