2014-10-08 4 views
1

내가 시려면 기능의 피드백을 얻을 싶습니다 구문 분석 로그 페이지에 표시되지하지만 구문 분석 로그 페이지 내 클라이언트 코드를 호출 한 후 난 단지 볼 수 있습니다을 console.log는 아래의 클라우드 코드에서

나는이는 경우 내가 알고 싶은 것을 시도 /를 시려면() 후에 만 ​​수행하기 전에 몇 가지 푸시 다른 중첩 된 쿼리를 추가해야합니다

Parse.Cloud.define("acceptMeetingBis", function(request, response) { 
var userAcceptingTheMeeting = request.user; 
var meetingId = request.params.meetingId; 
var changedObjects = []; 
var queryForMeeting = new Parse.Query("MeetingObject"); 
queryForMeeting.equalTo("objectId", meetingId); 
queryForMeeting.first({ 
    success: function(meeting) { 
     var userCreatorOfMeeting = meeting.get("user"); 
     userAcceptingTheMeeting.increment("acceptedMeetings", +1); 
     changedObjects.push(userAcceptingTheMeeting); 
     meeting.add("participantsObjectId", userAcceptingTheMeeting.id); 
     if (meeting.get("participantsObjectId").length === meeting.get("meetingNumberOfPersons")) { 
      meeting.set("isAvailable", false); 
     } 
     changedObjects.push(meeting); 
     Parse.Object.saveAll(changedObjects, { 
      success: function(objects) { 
       console.log("Successfully saved objects"); //this line doesn't show up 
       response.success("objects saved"); 
      }, 
      error: function(error) { 
       // An error occurred while saving one of the objects. 
       response.error(error); 
      } 
     }); 
     //future query and push notifications will go here 
     response.success("Meeting accepted"); 
    }, 
    error: function() { 
     response.error("Failed to accept the meeting"); 
    } 
}); 
}); 

: 여기

I2014-10-08T15:28:32.930Z] v249: Ran cloud function acceptMeetingBis for user dyGu143Xho with: Input: {"meetingId":"bUSTGNhOer"} Result: Meeting accepted 내 클라우드 코드 올바른 방법을 사용하거나 만약 내가 코드를 빌드해야합니다. 다른 방법. 저는 자바 스크립트에 익숙하지 않고 솔직히 약속과 같은 개념을 이해하기 위해 고심하고 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

2

귀하의 전화

Parse.Object.saveAll

에 비동기식, 당신은 즉시 방법의 클라우드 코드 실행을 종료 비동기 호출을 한 후

response.success("Meeting accepted")

를 호출합니다. 당신은 단순히

response.success("Meeting accepted")

으로

response.success("objects saved")

를 교체 할 경우 당신은 당신이 원하는 것을 얻을 수 있습니다.


나는 약속에 관한 나머지 질문을 보지 못했습니다. Parse's documentation on chaining promises을 확인하십시오. 원하는 내용을 확인하십시오. 그것은을 반환 (

Parse.Cloud.define("acceptMeetingBis", function(request, response) { 
    var userAcceptingTheMeeting = request.user; 
    var meetingId = request.params.meetingId; 
    var changedObjects = []; 
    var meetingToAccept; 
    var queryForMeeting = new Parse.Query("MeetingObject"); 
    queryForMeeting.get(meetingId).then(function(meeting) { 
     meetingToAccept = meeting; 
     var userCreatorOfMeeting = meeting.get("user"); 
     userAcceptingTheMeeting.increment("acceptedMeetings", +1); 
     return userAcceptingTheMeeting.save(); 
    }).then(function(userWhoAcceptedMeetingNowSaved) { 
     meetingToAccept.add("participantsObjectId", userWhoAcceptedMeetingNowSaved.id); 
     if (meetingToAccept.get("participantsObjectId").length === meetingToAccept.get("meetingNumberOfPersons")) { 
      meetingToAccept.set("isAvailable", false); 
     } 
     return meetingToAccept.save(); 
    }).then(function(savedMeeting) { 
     response.success("Meeting accepted"); 
    }, function(error) { 
     response.error("Failed to accept the meeting"); 
    }); 
}); 

을 당신이 원하는 각 비동기 작업을 위해 .then 기능 중 하나의 끝을 수행하고 결과를 반환 :

기본적으로, 여기 당신이 원하는 것 무엇 약속). .then 기능을 계속 추가하기를 원할 때까지 수행하십시오. 이때는 response.success으로 전화하십시오.

관련 문제