如何在 sequelize.js 中有条件地加载关联?
Posted
技术标签:
【中文标题】如何在 sequelize.js 中有条件地加载关联?【英文标题】:How to load associations conditionaly in sequlize.js? 【发布时间】:2016-07-29 22:43:58 【问题描述】:Post.findAndCountAll(
include: [
model: models.like,
where: userId: req.authSession.user.id
]
).then( collection =>
onSucess(collection);
);
如果帖子有来自用户的相关喜欢,这将加载帖子。但是,我想要的是加载所有用户的帖子并加载相关的类似内容(如果存在)。我可以使用 sequlize.js 以某种方式存档此行为吗?
【问题讨论】:
【参考方案1】:您只需要将where
子句嵌套在上一层即可。
Post.findAndCountAll(
where: userId: req.authSession.user.id ,
include: [model: models.like]
).then( collection =>
onSucess(collection);
);
这将返回所有具有userId === req.authSession.user.id
的帖子,并将包括他们的喜欢(如果有的话)。
根据评论编辑
如果您想获得用户的喜欢,您可以恢复查询
Like.findAndCountAll(
where: userId: req.authSession.user.id ,
include: [ model: models.post ]
);
【讨论】:
是的,但我只想要给定用户的类似内容,当我在这里发布时,我使用的完整请求被截断了。在现实生活中,它已经有了外部 where 方法。但这会返回所有喜欢的东西,随着时间的推移,这将是一个巨大的列表,如果有一个 l,我只想要一个经过身份验证的用户的喜欢。 谢谢,但还是不好。我不想要用户的喜欢。如果他喜欢给定的帖子,我想要用户的帖子等。所以结构应该类似于[postId, etc, like: null,[postId, etc, like: LikeObject,[postId, etc, like: LikeObject,[postId, etc, like: null]
,所以我想查询帖子,独立于是否存在点赞,但如果登录用户存在点赞,那么我也想包含它。如果不清楚,请告诉我,然后我会详细更新我的问题。以上是关于如何在 sequelize.js 中有条件地加载关联?的主要内容,如果未能解决你的问题,请参考以下文章