Sails.js 对关联值的查询
Posted
技术标签:
【中文标题】Sails.js 对关联值的查询【英文标题】:Sails.js query on an associated value 【发布时间】: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 对象,但我想知道是否有更好的解决方案来解决这个问题。
【问题讨论】:
【参考方案1】:目前还不是 100% 清楚您要在这里做什么。如果您的目标是过滤 Post
上填充的类别,您可以这样做:
Post.find()
.populate("category", where: category: category_id )
.exec( ... )
如果您只想检索特定类别的Post
s,您可以:
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
【讨论】:
以上是关于Sails.js 对关联值的查询的主要内容,如果未能解决你的问题,请参考以下文章
Sails.js + Waterline:通过关联进行多对多
如何在 Sails.js 中定义需要来自第三个模型/表的附加条件和/或数据的模型关联?