Sequelize - 如何从一个表中获取未被另一个表关联的条目

Phi*_*ipp 2 orm node.js sequelize.js

我使用 Sequelize 为用户评分帖子定义了三个实体:

var User = sequelize.define('User', {
  email:  {
    type: Sequelize.STRING,
    primaryKey: true
  }
});

var Post = sequelize.define('Post', {
  link: {
    type: Sequelize.STRING,
    primaryKey: true
  }
});

var Rating = sequelize.define('Rating', {
  result: Sequelize.STRING
});

Rating.belongsTo(Post);
Post.hasMany(Rating);

Rating.belongsTo(User);
User.hasMany(Rating);
Run Code Online (Sandbox Code Playgroud)

一个用户可以评价多个帖子。每个评级只属于一个用户和一个帖子。

现在我想查询给定用户尚未被该用户评级的所有帖子。我尝试了一千种方法,但没有成功。知道如何在 Sequelize 中实现这一目标吗?非常感谢!

Roh*_*lal 6

有两种方法要么在 Sequelize 中使用原始查询,要么也通过 Sequelize 查询 -

生的 -

return Db.sequelize.query("SELECT * FROM Post P WHERE (P.id NOT IN (SELECT postId FROM Ratings R WHERE R.userId="+userId+")) ",{ type: Sequelize.QueryTypes.SELECT });
Run Code Online (Sandbox Code Playgroud)

续集——

return Post.findAll({
where: {
Sequelize.literal("(posts.id NOT IN (SELECT R.postId FROM Rating R WHERE R.userId="+userId+"))")
}
});
Run Code Online (Sandbox Code Playgroud)