gpt4 book ai didi

angularjs - LoopbackJS:HasAndBelongsToMany,如何按关系属性查询/过滤?

转载 作者:搜寻专家 更新时间:2023-11-01 00:31:15 25 4
gpt4 key购买 nike

我目前正在处理我的第一个 Loopbackjs 项目,并且面临一个看似简单的问题:假设我有一个模型“Post”和一个模型“Tag”。一个帖子拥有并属于多个标签。

现在我需要列出所有带有特定标签的帖子。我只是不知道如何使用 Loopback 创建一个查询来实现这一点。我认为它会像这样工作,但事实并非如此:Posts.find( {哪里: {tag.id: {inq: [1, 4]}}} );

如果有任何帮助,我将不胜感激。

最佳答案

对某些相关属性进行筛选并不像应该的那么容易。 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;
});

好处是返回结果的格式与您预期的一样。但是,我的第二个示例的性能可能非常差,因为它总是会返回您的所有帖子,除非您在帖子级别指定过滤器或分页。它基本上是一个 Left Join,您需要一个 Inner Join,而 Loopback 目前无法做到这一点。

关于angularjs - LoopbackJS:HasAndBelongsToMany,如何按关系属性查询/过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32903293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com