我目前正在进行我的第一个Loopbackjs项目,并且面临一个看似简单的问题:假设我有一个模型"Post“和一个模型"Tag”。邮政有许多标签,也属于许多标签。
现在我需要列出所有带有特定标签的帖子。我只是不知道如何使用回收站来创建一个查询来实现这一点。我以为它会像这样工作,但它不会:Posts.find( {where: {tag.id: {inq: [1, 4]}}} );
我非常感谢你的帮助。
发布于 2015-10-04 12:20:18
对一些相关的属性进行过滤并不像应该的那样容易。据我所见,有一个拉请求悬而未决,但它已经开放了很长时间。过滤的唯一方法是在主模型上,所以您可以这样做:
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;
});好处是返回的结果按照您的预期格式化。但是,我的第二个示例的性能可能非常差,因为它总是返回所有的帖子,除非在Post级别指定过滤器或分页。它基本上是一个左连接,当你想要一个内部连接时,回收站现在不能这样做。
发布于 2017-02-10 06:40:12
我带着同样的问题来到这里,但是经过一些研究,我找到了这个解决方案。
我将使用一个例子:模型Provincias hasAndBelongsToMany Cantones。
为了得到:/api/Provincias/1/cantone
您可以在您的角度代码中使用:
Provincias.cantones({'id':1});
https://stackoverflow.com/questions/32903293
复制相似问题