如何让Music
成为'音乐?
{
id: 4
name: "playlist 1"
created_at: "2015-04-21T21:43:07.000Z"
updated_at: "2015-04-23T20:44:50.000Z"
Music: [
{
id: 12
name: "Deorro - Five Hours (Static Video) [LE7ELS]"
video_id: "K_yBUfMGvzc"
thumbnail: "https://i.ytimg.com/vi/K_yBUfMGvzc/default.jpg"
created_at: "2015-04-22T21:46:21.000Z"
updated_at: "2015-04-22T21:46:21.000Z"
playlist_id: 4
}
]
}
我的查询类似于:
.get(function (req, res) {
db.Playlist.findAll({
include: [db.Music]
}).then(function (playlists) {
if(!playlists) {
res.status(404).json({message: 'No playlist found!'});
return;
}
res.json(playlists)
})
})
播放列表模型:
module.exports = function(sequelize, DataType) {
var Playlist = sequelize.define('Playlist', {
name: DataType.STRING
}, {
classMethods: {
associate: function(models) {
Playlist.hasMany(models.Music, { foreignKey: 'playlist_id' });
}
},
tableName: 'playlists',
underscored: true
});
return Playlist;
};
音乐模特:
module.exports = function(sequelize, DataType) {
var Music = sequelize.define('Music', {
name: DataType.STRING,
video_id: DataType.STRING,
thumbnail: DataType.STRING
}, {
classMethods: {
associate: function(models) {
Music.belongsTo(models.Playlist);
}
},
tableName: 'musics',
underscored: true
});
return Music;
}
答案 0 :(得分:5)
更改型号名称中的外壳:
sequelize.define('music', ...)
或在关联中提供as
密钥:
Playlist.hasMany(Music, { as: 'music' })
答案 1 :(得分:2)
工作代码,以便于参考:
播放列表模型:
module.exports = function(sequelize, DataType) {
var Playlist = sequelize.define('Playlist', {
name: DataType.STRING
}, {
classMethods: {
associate: function(models) {
Playlist.hasMany(models.Music, { as: 'music', foreignKey: 'playlist_id' });
}
},
tableName: 'playlists',
underscored: true
});
return Playlist;
};
音乐模型:未更改
查询:
controller.route('/playlist')
.get(function (req, res) {
db.Playlist.findAll({
include: [{ model: db.Music, as: 'music' }]
}).then(function (playlists) {
if(!playlists) {
res.status(404).json({message: 'No playlist found!'});
return;
}
res.json(playlists)
})
})