【问题标题】:How to load associations conditionaly in sequlize.js?如何在 sequelize.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 以某种方式存档此行为吗?

【问题讨论】:

    标签: javascript associations sequelize.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}],所以我想查询帖子,独立于是否存在点赞,但如果登录用户存在点赞,那么我也想包含它。如果不清楚,请告诉我,然后我会详细更新我的问题。
    猜你喜欢
    • 2011-03-26
    • 2013-10-29
    • 2020-05-13
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2014-02-12
    • 2014-05-03
    • 1970-01-01
    相关资源
    最近更新 更多