Javascript 将自我参照多对多进行续集;如何指定I';我加入
我有一个Sequelize结构,它通过一个Javascript 将自我参照多对多进行续集;如何指定I';我加入,javascript,sequelize.js,Javascript,Sequelize.js,我有一个Sequelize结构,它通过一个Follow表将我的用户表与自身关联,并带有follower和following。我99%确信,我已经具备了所有必要的部件,可以按照我期望的方式工作;我有化名 User.belongsToMany(models.User, { through: models.Follow, as: 'Followers', foreignKey: 'follower'}); User.belongsToMany(models.User, { through: model
Follow
表将我的用户
表与自身关联,并带有follower
和following
。我99%确信,我已经具备了所有必要的部件,可以按照我期望的方式工作;我有化名
User.belongsToMany(models.User, { through: models.Follow, as: 'Followers', foreignKey: 'follower'});
User.belongsToMany(models.User, { through: models.Follow, as: 'Following', foreignKey: 'following'});
以及
User.hasMany(models.Follow, { foreignKey: 'following' });
User.hasMany(models.Follow, { foreignKey: 'follower' });
及
我可以打电话给你
User.findByPk(id, {
include: {
model: Follow
}
});
它返回一个用户和一个Follow条目数组。我遇到的问题是,Sequelize似乎默认创建
Follow
查询为where:{followING:User.id}
,而不是where:followER
,这样,如果我有一个用户跟随他们自己和两个其他人,但只跟随他们,它只从我的followING表返回一个结果。当我在seed中循环浏览少数用户的主键时,结果中只有following
值发生变化,因此我只返回用户的追随者,而不是用户正在跟踪的其他用户。当多个列与我要加入的Sequelize对象匹配时,是否有方法在包含中指定我要加入的特定列 我理解最坏的情况,我总是可以跳过
User
步骤,直接进入
Follow.findAll({
where: {
follower: id
}
})
但这限制了我对用户对象的直接访问,我必须编写一个额外的查询,考虑到存在自关联的多对多功能,这似乎很麻烦。如果您希望获得一个有追随者的用户或有追随者的用户,则无需指示
Follow
表。您只需指示所需关联的别名:
User.findByPk(id{
包括:{
型号:用户,
如:“追随者”
}
});
User.findByPk(id{
包括:{
型号:用户,
如:'以下'
}
});
如果需要包含直接遵循
,则需要添加如下关联:
User.hasMany(models.Follow, { as: 'FollowerLinks', foreignKey: 'follower'});
User.hasMany(models.Follow, { as: 'FollowingLinks', foreignKey: 'following'});
您还应该指出一个别名,这样Sequelize就会知道要使用什么关联:
User.findByPk(id{
包括:{
型号:Follow,
如:“FollowerLinks”
}
});
如果您希望获得一个有追随者的用户或有追随者的用户,则无需在Follow
表中指明。您只需指示所需关联的别名:
User.findByPk(id{
包括:{
型号:用户,
如:“追随者”
}
});
User.findByPk(id{
包括:{
型号:用户,
如:'以下'
}
});
如果需要包含直接遵循
,则需要添加如下关联:
User.hasMany(models.Follow, { as: 'FollowerLinks', foreignKey: 'follower'});
User.hasMany(models.Follow, { as: 'FollowingLinks', foreignKey: 'following'});
您还应该指出一个别名,这样Sequelize就会知道要使用什么关联:
User.findByPk(id{
包括:{
型号:Follow,
如:“FollowerLinks”
}
});
我没有看到像User.hasMany(models.Follow
这样的关联。它到底应该如何工作?@Anatoly我编辑了我的问题-我有两个用户。hasMany关联如下我没有看到像User.hasMany这样的关联(models.Follow
。它到底应该如何工作?@Anatoly我编辑了我的问题-我有两个用户。Follow有很多关联我编辑了我的问题以包括用户。我有很多关联,就像我已经有过的,但它们没有像你建议的那样别名。你用一个答案解决了我的两个问题。Stellar。我编辑了我的问题。)要包括用户的问题。我已经有很多关联,但它们没有你建议的别名。你用一个答案解决了我的两个问题。Stellar。