【发布时间】:2018-06-07 11:37:05
【问题描述】:
我有三个表:videoclips、playlists 和 videoclipPlaylistMap。
- Videoclips 表有一个 int id 作为主键,一个 videoId 作为一个字符串。
- VideoclipPlaylist 映射有一个 playlistId 作为指向播放列表表中的 id 的外键和一个 videoclipId 作为指向 videoId 的外键 来自视频剪辑表。
我想返回一个包含所有播放列表的 JSON,并为每个播放列表返回一个包含视频剪辑的数组。
我不知道如何进行续集关联以实现这一目标。
let Videoclip = sequelize.define('videoclip',{
title: Sequelize.STRING,
videoId: Sequelize.STRING,
thumbnail: Sequelize.STRING,
channelTitle: Sequelize.STRING,
duration: Sequelize.DOUBLE,
viewCount: Sequelize.INTEGER
});
let Playlist = sequelize.define('playlist', {
name: Sequelize.STRING,
userId: Sequelize.INTEGER,
tagList: Sequelize.STRING
});
let VideoclipPlaylistMap = sequelize.define('videoclipPlaylistMap', {
videoclipId: Sequelize.STRING,
playlistId: Sequelize.INTEGER
});
User.hasMany(Playlist, {foreignKey: 'userId'});
Playlist.belongsTo(User, {foreignKey: 'userId'});
Playlist.hasMany(VideoclipPlaylistMap, {foreignKey: 'playlistId'});
VideoclipPlaylistMap.belongsTo(Videoclip, {foreignKey: 'videoclipId'});
现在它正在执行这个连接:
LEFT OUTER JOIN `videoclips` AS `videoclipPlaylistMaps.videoclip` ON `videoclipPlaylistMaps`.`videoclipId` = `videoclipPlaylistMaps.videoclip`.`id`
而不是videoclipPlaylistMaps.videoclip.id,它应该转到videoclipPlaylistMaps.videoclip.videoId
【问题讨论】:
标签: mysql json node.js sequelize.js