当前位置: 首页 > 面试题库 >

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

鲜于岳
2023-03-14
问题内容

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

现在,我需要列出所有带有特定标签的帖子。我只是想不通如何使用Loopback创建查询来实现此目的。我以为它会像这样工作,但不会: Posts.find( {where: {tag.id: {inq: [1, 4]}}} );

我将不胜感激任何帮助。


问题答案:

对某些相关属性进行过滤并不像应该那么容易。有一个未完成的拉取请求,但已经开放很长时间了。据我所知,唯一的
过滤方法 是在主模型上,因此您可以执行以下操作:

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;
});

这样做的好处是,返回的结果将按照您期望的格式进行格式化。但是,第二个示例的性能可能会非常差,因为它将始终返回您的所有帖子,除非您在帖子级别指定过滤器或分页。它基本上是一个左联接,在这里您需要一个内部联接,而环回此刻暂时无法执行。



 类似资料:
  • 问题内容: 我在SQLAlchemy上没有太多经验,并且有一个我无法解决的问题。我尝试搜索,并且尝试了很多代码。这是我的课程(简化为最重要的代码): 我想查询所有母亲的phenoscore为(例如)的患者 如前所述,我尝试了很多代码,但我不明白。在我看来,合乎逻辑的解决方案是 因为,您可以在输出时访问每个元素,但是此代码不执行此操作。 是否有(直接)按关系的属性进行过滤的可能性(无需编写SQL语句

  • 我正在使用Ebean和Play 2框架,并得到两个模型:用户模型和图书模型。用户模型与图书模型以一对多关系连接。所以每个用户可以有很多书或者根本没有书。图书模式本身也有其特性。现在我想在用户模型中创建一个查询,它只返回用户,这些用户拥有具有某些属性的书籍。例如:一个属性可能是条件,如新建或使用。现在给我所有有新条件的书的用户。是否可以使用Ebean方法创建这样的查询?还是我必须使用原始SQL?

  • 问题内容: 我有一个对象(BlogPost),其中包含元素(标记)的M:N集合。 如何查询对象(BlogPost)中至少一个对象的标签与使用JPA2(hibernate)的一组标签(由用户定义)中的元素匹配。 我的主要问题是,我实际上需要比较两个标签集合:-BlogPost的标签集合。-我搜索的收藏集 我尝试了一下,但是它不起作用,因为我的帖子实体具有多个标签。 那我该怎么办呢? 我的BlogPo

  • 我有两个模型。模型有一个(关系)。 关于模型,我有以下关系:

  • 问题内容: 我试图在AngularJS中创建一个自定义过滤器,该过滤器将通过特定属性的值过滤对象列表。在这种情况下,我要按“极性”属性(“正”,“中性”,“负”的可能值)进行过滤。 这是我没有过滤器的工作代码: HTML: 这是JSON格式的“ $ scope.tweets”数组: 我可以提出的最佳过滤器如下: 此方法返回一个空数组。从“ console.log(polarity)”语句中不会打印