我正在制作一个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);
答案 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