Sequelize - 如何从一个表中获取未被另一表关联的条目
Posted
技术标签:
【中文标题】Sequelize - 如何从一个表中获取未被另一表关联的条目【英文标题】:Sequelize - How to get entries from one table that are not assiciated by another table 【发布时间】:2019-02-11 12:34:58 【问题描述】:我使用 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);
用户可以对多个帖子进行评分。每个评分只属于一个用户和一个帖子。
现在我想查询给定用户所有尚未由该用户评分的帖子。我尝试了一千种方法,但没有成功。知道如何在 Sequelize 中实现这一点吗?非常感谢!
【问题讨论】:
【参考方案1】:有两种方法在 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 );
续集 -
return Post.findAll(
where:
Sequelize.literal("(posts.id NOT IN (SELECT R.postId FROM Rating R WHERE R.userId="+userId+"))")
);
【讨论】:
以上是关于Sequelize - 如何从一个表中获取未被另一表关联的条目的主要内容,如果未能解决你的问题,请参考以下文章