对每个循环项执行查询并等待结果

Do a query for every loop item and wait for result

本文关键字:查询 等待 结果 执行 循环      更新时间:2023-09-26

我正在创建一个CloudCode函数,返回与我的设置匹配的所有用户。在这个函数中,我循环遍历一个用户列表,我需要获得他们的设置,以便查看是否应该返回它们。唯一的问题是循环不会等待查询完成。

我怎么能得到设置对象的每个用户在循环中,检查设置是否正确,然后推他们在一个数组和返回数组时,循环已经完成?

我现在使用的代码:

for (var i = 0; i < connectResults.length; i++) {
    var connect = connectResults[i];
    for (var j = 0; j < matchResults.length; j++) {
        var match = matchResults[j];
        if (connect.get("sendBy").id == match.id) {
            var indexOf = matchResults.indexOf(match);
            matchResults.splice(indexOf, 1);
        } else if (connect.get("receivedBy").id == match.id) {
            var indexOf = matchResults.indexOf(match);
            matchResults.splice(indexOf, 1);
        }
        if(typeof match.get("settings") != 'undefined') {
            var settingsQuery = new Parse.Query("Settings");
            settingsQuery.equalsTo("objectId",match.get("settings").id);
            settingsQuery.find({
               success: function(setting) {
                    console.log(match.get("username") + " " + setting.get("radius"));
               } 
            });
        }
    }
}
response.success(matchResults);

我将使用设置作为查询约束来查询所有用户,而不是查询所有用户并尝试匹配他们的设置。换句话说,告诉数据库您希望它返回具有正确设置的所有用户。

var usersQuery = new Parse.Query("Users");
//Below, "settings" is the column name in your Users table
usersQuery.equalTo("settings", /* Settings value you are matching */);
usersQuery.find({
  //...
});

如果有多种设置可能性,您可能需要containedIn查询。参见文档中的示例:https://parse.com/docs/js/guide#queries-query-constraints

祝你好运!:)