【问题标题】:Sails.js query on an associated valueSails.js 对关联值的查询
【发布时间】:2014-05-21 08:40:00
【问题描述】:

我正在使用 Sails.js 版本 0.10.0-rc4。所有模型都使用sails-mysql。

我正在尝试查询与另一个模型具有“一对多”关联的模型(查询发生在“多”端)。

看起来像这样:

Post.find()
    .where({ category: category_id })
    .populate("category")
    .exec( ... )

这给了我一个空数组,但是当我省略 .populate("category") 时,我得到了正确的结果集。

我知道我可以离开 .populate("category"),然后分别获取每个相关的 Category 对象,但我想知道是否有更好的解决方案来解决这个问题。

【问题讨论】:

    标签: javascript mysql node.js sails.js


    【解决方案1】:

    目前还不是 100% 清楚您要在这里做什么。如果您的目标是过滤 Post 上填充的类别,您可以这样做:

    Post.find()
        .populate("category", {where: { category: category_id }})
        .exec( ... )
    

    如果您只想检索特定类别的Posts,您可以:

    Category.findOne(category_id)
            .populate("posts")
            .exec(function(e, c) {console.log(c.posts);})
    

    【讨论】:

    • 第二个 sn-p 完成这项工作。我想获得特定类别的帖子。问题是我在这条路线上运行了一堆不同的查询(按名称获取帖子,按观看次数获取帖子等)。因此,我希望能够以类似的方式查询“按类别获取帖子”。你知道这是否可行吗?
    • 遇到相同的情况..顺便说一句,@scott 这仅适用于一对一关联?
    • 这里也有同样的问题。这仅适用于一对一关联,不适用于一对多或多对五。 @Lujaw,你找到解决方案了吗?
    • 第一个 sn-p 在多对多关联中对我不起作用。
    【解决方案2】:

    原帖太早了

    以下对我有用(帆 0.12)的人口:

    Post.find({category: category_id})
        .populate("category")
        .exec( ... )
    

    但我仍然很困惑在子查询中搜索除 id 之外的任何其他属性的人..

    Edit2:似乎还不支持深度查询:https://github.com/balderdashy/waterline/issues/266

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 2015-06-27
      • 2015-06-07
      • 2015-06-07
      • 2014-12-01
      • 2015-02-01
      • 2015-02-01
      相关资源
      最近更新 更多