这不像应该对某些相关属性执行过滤器那么简单。 There is a pull request outstanding but it's been open for a long time now.据我所看到的,过滤的唯一方法是在主模式,所以你可以这样做:
Tags.find({"include":"posts","where":{"id":{"inq":[1, 4]}}})
不幸的是,你需要做更多的工作,以获得从文章的一个很好的列表你回来的结果。
编辑您也可以得到所有的帖子,只带回符合使用scope
您查询的标签,有如下:
Posts.find({
"include": { "relation": "tags",
"scope": {
"where": {
"id": { "inq": [1, 4]}
}
}
}
});
在查询的回调,你可以整理一下结果在返回之前使用以下代码:
var finalresult = instance.filter(function(post) {
return post.toJSON().tags.length > 0;
});
好处是,返回的结果格式与您的预期相同。但是,我的第二个示例的性能可能非常差,因为它将始终返回所有帖子,除非您在帖子级别指定过滤器或分页。它基本上是一个左连接,在那里你想要一个内连接,这个Loopback目前无法做到。
非常感谢!我现在这样做,然后过滤出重复项。不过,我认为这是LoopbackJS ORM的一个很大的限制,我正在重新考虑将它用于更大的项目。 – Nanunana
@Nanunana当我发现时,我无法相信......我做了更多的挖掘并找到了另一种方式。仍然不是很好,但也许更好一点。看我的编辑。 – conradj
Hy,我有一个hasOne关系,并且像这样做的工作..但它包括关系字段连同主要对象..是否有可能使它分离?恩。可以说标签有字段标记名..所以它来Post.tagname ..而不是Post.tag.tagname – mariomol