구문 분석에서 구름 코드를 실행하고 있습니다. 쿼리를 실행하고 각 쿼리에 대해 하위 쿼리를 수행하고 있습니다. 내 하위 쿼리 결과를 수정합니다. 그러나 내 하위 쿼리 개체를 수정하면 쿼리 결과 개체를 수정하여 해당 개체가 처리되었음을 나타냅니다.개체 저장시 구문 분석 콜백이 호출되지 않습니다.
약속을 사용하여 초기 쿼리를 만들고 각 결과를 반복하며 그 결과를 사용하여 하위 쿼리를 수행하고 새 하위 쿼리 결과를 수정할 수 있습니다. 그러나 일단 하위 쿼리 결과를 성공적으로 저장하면 저장 콜백이 호출되지 않고 초기 쿼리 개체를 업데이트 할 수 없습니다.
Parse.Cloud.job("processEvents", function(request, status){
Parse.Cloud.useMasterKey();
var query = new Parse.Query("events");
query.equalTo("processed", false);
query.limit(10);
query.find().then(function(results) {
var promise = Parse.Promise.as();
_.each(results, function(eventsRecord) { //EACH
var eventData = eventsRecord.get("eventData");
var eventsObject = JSON.parse(eventData);
var events = eventsObject["events"];
for (var i = 0; i < events.length; i++) { //FOR
var currentEvent = events[i];
if(currentEvent["type"] === "vote"){
var votes = currentEvent["entity"]["votes"];
for (var i = 0; i < votes.length; i++) {
var currentVote = votes[i];
promise = promise.then(function() {
var EventAssociationObject = Parse.Object.extend("eventAssociation");
var query = new Parse.Query(EventAssociationObject);
query.equalTo("voteID", currentVote["id"]);
return query.first({
success:function(object){
var partyEntity = currentEvent["entity"];
object.set("entityJSONInformation", JSON.stringify(partyEntity));
//object in the response callback must be the object saved
return object.save(object, {
success:function(object){
eventsRecord.set("processed", true);
return eventsRecord.save();
},
error: function(error){
console.log(error);
}
});
},
error:function(error){
console.log(error);
}
});
});
};
}
}; //FOR
}); //EACH
return promise;
}).then(function() {
status.success("Finished");
});
});
당신은 약속을 코드에서 탈출하고 당신이 성공'으로 그런 일을 수행 할 때이 될해야 :'등 대신 약속을 반환 그들을 묶어 라. '성공'에서 돌아 오면 아무데도 돌아 오지 않고 약속대로하는 것처럼 비동기 적으로 기다리지 않습니다. –
답글로 의견을 제출하면 받아 들일 것입니다. – ParseMan5000
그래, 내가 더 명확히하고 그것을 게시했습니다. 다행히 도울 수있어. –