如何在Parse API(Back4App)中对查询取反?获取不在关联中的所有对象
Parse查询取反的简便实现方案
Parse 官方SDK已经内置了原生的查询取反能力,不需要手动遍历查询结果拼接notEqualTo条件,两种实现方案分别适配不同版本的SDK:
方案1:通用版本(适配v2.3.0及以上JS SDK)
使用内置的doesNotMatchQuery方法实现取反逻辑,所有逻辑在服务端执行,避免拉取全量关联数据的性能损耗,适配你的关系查询场景的代码如下:
const relation = myParseObject.relation("myRelation"); const relatedQuery = relation.query(); // 替换为你的关系对应的目标类名 const negatedQuery = new Parse.Query("你的目标类名"); // 排除所有命中关联查询的对象 negatedQuery.doesNotMatchQuery("objectId", "objectId", relatedQuery); return await negatedQuery.find();
方案2:极简版本(适配v4.0.0及以上JS SDK)
更高版本的SDK已经原生实现了你示例中提到的Parse.Query.not静态方法,你写的示例代码可以直接运行,不需要额外改造:
const relation = myParseObject.relation("myRelation"); const query = relation.query(); const negatedQuery = Parse.Query.not(query); return await negatedQuery.find();
以上两种方案都避免了手动拉取关联ID拼接条件的问题,同时也不会出现ID列表过长导致的查询长度超限问题。
内容的提问来源于stack exchange,提问作者saetch_g
相关产品推荐
相关产品推荐

