У меня есть массив идентификаторов пользователей, которые я хочу выполнить, выполняя поиск по базе данных, размещенной в parse.com. Я заканчиваю цикл через массив из 5 элементов, но все, что я получаю, - это 5 одинаковых записей. Каждая выводимая запись относится к последнему элементу массива. Пример: если в массиве у меня есть tom, dick, harry, jane и ben, тогда я получаю 5 записей, все отображают информацию ben.Проблема с использованием массива имен для поиска в базе данных parse.com
Можете ли вы взглянуть и рассказать мне, почему это может быть? Я правильно использую функцию «обещание»?
Спасибо!
function LookupAndPrintFriends(friendList) {
var userQuery = new Parse.Query(Parse.User);
var userobj;
// Do something with the returned Parse.Object values
var promise = Parse.Promise.as();
alert("got here and there are this many friends: " + friendList . length); // returns 5 unique friend IDS
_.each(friendList, function (friendID) {
promise = promise.then(function() {
userQuery.equalTo("objectId", friendID);
userQuery.first().then(function (friendUserRecord) {
alert("i just did lookup on friend with id: " + friendID); // shows a different friend ID each time through the loop
alert("found him and his name is: " + friendUserRecord.get("firstname")); // always returns name of last friend in the array
userobj = friendUserRecord;
name = userobj.get("firstname") + " " + userobj.get("lastname");
alert("found this friend name: " + name); // always shows name of last name in the array
myFriendsArray.push(name);
});
return;
});
}); //here
return promise;
}
спасибо, Rilke. Вот и все. Код работал в одно время, поэтому я, должно быть, переместил эту декларацию вверх и не заметил эффекта. Все еще кажется странным, что переменная, которая находится в запросе, не изменяет характер запроса. Вы должны выделить новый объект запроса для каждого выполняемого запроса? – phil
Из документов: > Parse.Query определяет запрос, который используется для извлечения Parse.Objects. То есть каждый метод, который вы вызываете для объекта Query (в вашем случае '.equalTo'), просто определяет запрос перед его отправкой, используя вызов«. First ». – metame