입력 배열에서 전화 번호와 일치하는 전화 번호를 가진 사용자를 찾으려고합니다. 그러나 나는 userQuery가 완료되기 전에 response.success(friends);
이 호출되고 있다고 생각합니다. 현재 데이터로는 2 명의 사용자를 반환해야하지만 현재 작성된대로 빈 배열 만 반환합니다. 성공 응답을 userQuery (단순히 테스트하기 위해)에 넣으면 사용자가 다시 생겨서 쿼리가 옳다는 것을 알게됩니다. 다른 내포 된 약속이 필요합니까?중첩 된 약속을 구문 분석 하시겠습니까?
Parse.Cloud.define("addFriends", function(request, response) {
var _ = require('underscore.js');
Parse.Cloud.useMasterKey();
var friends=[];
var theNumbers = request.params.phoneNumbers;
var userId = request.params.user;
var currentUserQuery = new Parse.Query("User");
currentUserQuery.equalTo("objectId", userId)
currentUserQuery.first().then(function(currentUser) {
var promise = Parse.Promise.as();
_.each(theNumbers, function(aNumber) {
promise = promise.then(function() {
console.log('looking for: ' + aNumber);
userQuery = new Parse.Query("User");
userQuery.equalTo("phoneNumber", aNumber);
userQuery.first().then(function(foundUser){
console.log("Found user: " + foundUser);
friends.push(foundUser);
});
});
return promise;
});
}).then(function(){
console.log('done');
response.success(friends);
});
});
완벽하게 작동합니다. 훌륭한 방법은 "인수"또는 친구 배열에 푸시 될 때 반환되는 정보를 필터링하거나 사용자 정의 할 수 있습니까? 현재 깨끗한 객체 대신 많은 메타 데이터를 가지고 있습니다. –
'then' 콜백에서 그렇게합니다. 'response.success' 전에 청소하십시오. – wayne