查询中的CloudCode多个查询不起作用

Ida*_*dan 10 javascript parse-platform parse-cloud-code

我正在尝试使用云功能找到我之前没有连接的用户.我正在使用的桌子很少:

  1. 用户表 - 添加了"hasLight"布尔列的标准表
  2. 连接表:
    • 'user' - 指向用户的指针(第一面)
    • 'userId' - 用户的objectId
    • 'user2' - 指向我们连接的用户的指针
    • 'userId2' - 我们连接的用户的objectId
  3. 可用表:
    • 'userObjectId' - 用户的objectId
    • '柜台' - 号码

代码:

Parse.Cloud.define("findFreshUser", function(request, response) {

    Parse.Cloud.useMasterKey(); // For reading all the table //

    var user = Parse.User.current();

    // Get all possible users we already connected to //
    var connectQuery = new Parse.Query("Connected");
    connectQuery.include('userId2');
    connectQuery.equalTo("userId", Parse.User.current().id);

    // Get all users with availability of '0' //
    var availableQuery = new Parse.Query("Available");
    availableQuery.notEqualTo("counter", 0);  

    var freshUserQuery = new Parse.Query(Parse.User);

    freshUserQuery.doesNotMatchKeyInQuery("objectId", "userId2", connectQuery); // We haven't connected before - THIS DOEN'T WORK !!! //
    freshUserQuery.doesNotMatchKeyInQuery("objectId", "userObjectId", availableQuery); // We won't use '0' availability users - THIS WORKS //

    freshUserQuery.equalTo("hasLight", false); // user must not have a light //
    freshUserQuery.descending("updatedAt");
    freshUserQuery.limit(1); // We need only 1 user //

    freshUserQuery.find({ 
        success: function(results) {
            if (results.length>0){
                console.log("Found the user "+ results[0].id);
                response.success(results[0].id);
            }else{
                response.error("No user found");
            }

        },
        error: function() {
            response.error("No user found");
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当使用2个doesNotMatchKeyInQuery语句时,CloudCode完全忽略connectQuery(所有其他语句都没问题):

仅使用时

freshUserQuery.doesNotMatchKeyInQuery("objectId", "userId2", connectQuery);
Run Code Online (Sandbox Code Playgroud)

并评论出来

freshUserQuery.doesNotMatchKeyInQuery("objectId", "userObjectId", availableQuery);
Run Code Online (Sandbox Code Playgroud)

它确实有效.所以我认为这与同时使用它们有关,它们可能相互冲突.我需要做什么才能同时申请?

感觉这是一些解析问题,但我对CloudCode很新,所以这可能是我做得不对的.

注意:请注意我甚至不比较用户对象本身而是它的id(这是隔离问题的一部分).意思是,我知道我可以使代码和数据库更好.

Tou*_*eur -2

您必须使用 Promise 来实现此类查询:blog.parse.com/learn/engineering/whats-so-great-about-javascript-promises/