如何使用Sequelize检索不在多对多关联中的所有记录

时间:2019-04-11 23:56:07

标签: javascript node.js postgresql sequelize.js

Sequelize使您能够定义表之间的多对多关联,这为Model实例增加了一些额外的功能。

我有一个Users表,并且在表上定义了一个自关联,如下所示: User.belongsToMany(models.User, { through: 'Friends', as: 'friends', foreignKey: 'userId' });

这为User模型的实例提供了两个额外的方法,例如user.getFriends()。到目前为止一切顺利。

我想做的是让所有不是我们实例朋友的用户。类似于user.getNonFriends()。使用Sequelize可以吗?

1 个答案:

答案 0 :(得分:1)

我能想到的一个快速解决方案是,您可以从数据库中获取用户A的朋友列表。使用该结果,您可以获得不在用户的A列表中的朋友列表。这是代码示例

const friends = user.getFriends();
const friendIds friends.map(friend => friend.id)
Friend.findAll({ where: {
      id: { $notIn: [...friendIds] }
     }
 })