SQLite3-我有一个用户表和一个songNodes表。用户可以喜欢的歌曲,用户可以“分叉”歌曲。我有两个单独的联结表,它们按目的表示这些唯一的联系,但其他方面相同。
Sequelize-我知道如何在续集中执行联结查询的唯一方法如下 -
var myForks = function(userId, callback) {
User.findOne({
where: {
id: userId
}
})
.then(function(userObj) {
userObj.getSongNodes() //this is where I need to specify
.then(function(stuff) { //a junction table
callback(stuff);
})
})
};
我试图对此进行广泛研究,但我无法找到一种方法来指定我想要使用自动生成的函数'getSongNodes'的联结表。任何帮助/指导将不胜感激!
答案 0 :(得分:2)
我猜你有三个名字分别是User,Song,SongNode。你必须定义这些之间的关联。
您可以定义以下行之类的关联;
models.User.belongsToMany(models.Song, {
"constraints": false,
"foreignKey": "userId",
"through": {
model: models.SongNode,
unique: false
}
});
models.Song.belongsToMany(models.User, {
"constraints": false,
"foreignKey": "songId",
"through": {
model: models.SongNode,
unique: false
}
});
后;你可以使用这样的模型之间的关系;
var myForks = function(userId, callback) {
User
.findOne({
"where": { "id": userId }
})
.then(function(user) {
user
.getSongNodes()
.then(function(songNodes) {
callback(songNodes);
});
});
};
或者你也可以这样;
var myForks = function(userId, callback) {
User
.findOne({
"where": { "id": userId },
"include": [Song]
})
.then(function(user) {
callback(user.Songs);
});
};
我希望它有效