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

时间:2015-06-02 14:56:27

标签: javascript parse-platform promise cloud-code

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

如何为循环中的每个用户获取Settings对象,检查设置是否正确,然后将它们推入数组并在循环结束时返回数组?

我现在使用的代码:

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);

1 个答案:

答案 0 :(得分:0)

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

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

祝你好运! :)