首页 > 解决方案 > 解析云代码 DoesNotMatchKey

问题描述

我的架构:

Match: 

scheduledBy (Pointer to user) 

scheduledWith (Pointer to user)



Photo: 

owner (Pointer to user)

我想为没有任何匹配项的用户查找照片。

我尝试了什么:

    let photoQuery = new Parse.Query(MODEL.Photo.className());
    photoQuery.include('owner');

    // Do not include people who have matches
    let matchQuery = new Parse.Query(MODEL.Match.className());
    photoQuery.doesNotMatchKeyInQuery('owner', 'scheduledBy',   matchQuery);
    photoQuery.doesNotMatchKeyInQuery('owner', 'scheduledWith', matchQuery);

    // Get final results
    return photoQuery.find()

这仅适用于 scheduleBy 列。

似乎由于某些奇怪的原因,您不能使用相同的键和查询但不同的查询键来执行 doesNotMatchKeyInQuery 。

谁能证实这一点?如果是这样,最好的选择是什么?

我删除了scheduledBy,只使用了scheduledWith,效果也很好。所以数据没有问题,我相信它是 Parse 的一个错误。

标签: node.jsparse-server

解决方案


我认为您走在正确的轨道上,但我认为问题在于使用单个内部查询来限定主查询上的两个字段。这更像是一种预感,但我认为你会得到你所寻求的结果......

// use a distinct instance of an inner query for each test in the outer query
let matchQueryBy = new Parse.Query(MODEL.Match.className());
let matchQueryWith = new Parse.Query(MODEL.Match.className());

photoQuery.doesNotMatchKeyInQuery('owner', 'scheduledBy',   matchQueryBy);
photoQuery.doesNotMatchKeyInQuery('owner', 'scheduledWith', matchQueryWith);

推荐阅读