如何否定 Parse 的 API (Back4App) 中的查询?具体来说,我如何让一切都没有关系?
Posted
技术标签:
【中文标题】如何否定 Parse 的 API (Back4App) 中的查询?具体来说,我如何让一切都没有关系?【英文标题】:How do I negate a query in Parse's API (Back4App)? Specifically, how do I get everything not in a relation? 【发布时间】:2021-10-26 22:00:57 【问题描述】:有谁知道是否有一种简单的方法来否定解析查询?像这样的:
Parse.Query.not(query)
更具体地说,我想做一个关系查询,获取除查询中的对象之外的所有内容。例如:
const relation = myParseObject.relation("myRelation");
const query = relation.query();
const negatedQuery = Parse.Query.not(query);
return await negatedQuery.find();
我知道一种解决方案是获取关系中的对象,然后通过使用 query.notEqualTo("objectId", fetchedObjectIds[i])
循环遍历 objectIds 创建一个新查询,但这似乎真的很迂回......
任何帮助将不胜感激!
【问题讨论】:
我不太明白您需要返回什么。如果您可以分享有关您的架构的一些信息以及您想要检索的示例,我可以尝试提供帮助。无论如何,看起来doesNotMatchKeyInQuery
是要走的路。
【参考方案1】:
doesNotMatchKeyInQuery
是 Davi Macedo 在 cmets 中指出的解决方案。
例如,如果我想获取不在文章关系中的所有评论,我会执行以下操作:
const relationQuery = article.relation("comments").query();
const notInRelationQuery = new Parse.Query("Comment");
notInRelationQuery.doesNotMatchKeyInQuery("objectId", "objectId", relationQuery);
const notRelatedComments = await notInRelationQuery.find();
我的理解是第一个参数是指定我们正在获取的对象中的键。第二个参数是指定我们将要讨论的查询中的对象中的键。最后,我们为我们不想要的对象争论一个查询。因此,它本质上是找到你不想要的对象,然后将你想要的对象的值与你不想要的对象的值进行比较。然后它返回你想要的所有对象。我可能会写得更简洁,但是w/e。
【讨论】:
以上是关于如何否定 Parse 的 API (Back4App) 中的查询?具体来说,我如何让一切都没有关系?的主要内容,如果未能解决你的问题,请参考以下文章
RestAssured API测试框架中的否定断言或否定匹配[关闭]
Parse 的 REST API 和 PHP Curl 请求 - 如何
Google Adwords 通过 API 添加带有特殊字符的否定关键字
如何使用 REST API 从 Parse.com 下载文件?