gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:58:02 24 4
gpt4 key购买 nike

我正在尝试使用云功能查找之前未联系过的用户。我使用的表格很少:

  1. 用户表 - 添加了“hasLight” bool 列的标准表
  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");
}
});

});

由于某些原因,CloudCode 在使用 2 个 doesNotMatchKeyInQuery 语句时完全忽略 connectQuery(所有其他语句都很好):

仅在使用时

freshUserQuery.doesNotMatchKeyInQuery("objectId", "userId2", connectQuery);

并注释掉

freshUserQuery.doesNotMatchKeyInQuery("objectId", "userObjectId", availableQuery);

它确实有效。所以我认为它与同时使用两者有关,它们可能相互冲突。我需要做什么才能使两者都适用?

感觉像是一些解析问题,但我对 CloudCode 真的很陌生,所以这可能是我做的不对。

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

最佳答案

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

关于javascript - 查询中的 CloudCode 多个查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com