2014-08-28 2 views
0

Я никогда не изучал javascript, поэтому, пожалуйста, несите меня.Пропущенный раздел кода облачного кода

У меня есть функция, которая делает облака все, кроме указанного раздела (>>):

Parse.Cloud.define("acceptRequest", function(request, response) { 
var user = request.user; 
var requestUser; 
var requestObject; 
var requestId = request.params.objectId; 

var query = new Parse.Query(GameRequests); 
query.get(requestId,{ 
    //Get GameRequest Object - requestObject 
    success: function (object) { 

     var requestObject = object; 

     var sender = requestObject.get("from"); 
     var senderId = sender[0]; 

     var query = new Parse.Query(Parse.User); 
     query.get(senderId, { 
      //From GameRequest Object data, find sender of request "requestUser" 
      success: function (userObject) { 

       var requestUser = userObject; 

       var requestUserList = requestUser.get("SENTrequests") 
       var requestIndex = requestUserList.indexOf(requestId); 

       if (requestIndex > -1) { 
          requestUserList.splice(requestIndex, 1); 
        requestUser.set("SENTrequests",requestUserList); 
        if (requestUserList.length = 1) { 
         user.unset("SENTrequests"); 
          } 
              } 

       var userList = user.get("RCDrequests"); 
       var userIndex = userList.indexOf(requestId); 

       if (userIndex > -1) { 
          userList.splice(userIndex, 1); 
        user.set("RCDrequests",userList); 
        if (userList.length = 1) { 
         user.unset("RCDrequests"); 
          } 
         } 

        requestObject.destroy({ 
         success: function(requestObject) { 


          requestUser.add("partners",user.id); 
          user.add("partners",requestUser.id); 

          var firstmsg = new GameMessage(); 
          var secondmsg = new GameMessage(); 

          firstmsg.set("sender", user.id); 
          firstmsg.set("receiver", requestUser.id); 
          firstmsg.set("sent", 0); 
          firstmsg.set("received", 0); 
          firstmsg.set("receiverName", requestUser.getUsername()); 

          secondmsg.set("sender", requestUser.id); 
          secondmsg.set("receiver", user.id); 
          secondmsg.set("sent", 0); 
          secondmsg.set("received", 0); 
          secondmsg.set("receiverName", user.getUsername()); 

          Parse.Object.saveAll([requestUser, user, firstmsg, secondmsg], { useMasterKey: true },{ 
         >>  success: function() { 

         >>  console.log("Saving messages again"); 
         >>  firstmsg.set("otherside", secondmsg.id); 
         >>  secondmsg.set("otherside", firstmsg.id); 
         >>   
         >>  Parse.Object.saveAll([firstmsg, secondmsg]); 
           }, 
           error: function(error) { 
           } 

          }); 

          response.success("Successful"); 
         }, 

         error: function(requestObject, error){ 
         } 
       }); 

      }, 

      error: function (userObject,error) { 

      } 
     }); 

    }, 

    error: function (object,error) { 
     response.error("Error"); 
    } 
    }); 

}); 

Предполагается сохранить ObjectIds двух сообщений, так что каждый имеет ссылку на другой.
Что вызывает эту проблему и как ее исправить?

Спасибо

ответ

0

Я думаю, что ваша отправка response.success («Successful») до сохранения завершено. Перенесите свой ответ на обработчик успеха сохранения.

Вы должны взглянуть на promises section. Вам не понадобятся глубокие вложенные функции, которые у вас есть.

Смежные вопросы