如何否定 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 下载文件?

如何使用 AFNetworking 2.0 处理 Parse.com Rest API 错误

如何将Parse通道与我们的API同步以正确提供推送通知