2014-10-10 2 views
-1

54 번째 줄 (별표 표시된 ***********)에서 undefined의 'push'를 호출 할 수 없다는 오류가 발생했습니다. 처음에는 비어 있어야하는 'randUsers'배열이 제대로 전달되지 않습니다. 일반 사용자가 제대로 전달되지 않는 이유는 무엇입니까?javacript 변수가 함수에 전달되지 않음

Parse.com의이 클라우드 코드는 afterSave 함수에 의해 트리거됩니다. 변수를 전역 변수가되도록 선언했지만 idk는 이것이 클라우드 코드이고 일반 구현 파일이 아니라면 변수에 영향을 미칩니다. 당신은이 인수 getUsers 전화

function getUsers(randUsers, response, leanBody, leanSenderName, leanSenderId, randUsers){ 
    //blabla 
    randUsers.push(rand); //randUsers in this context is the argument passed to the function 
    //blabla 
} 

:
getUsers(leanBody, leanSenderId, leanSenderName, randUsers);

그래서 leanBody이 getUsers 기능에 randUsers입니다

var leanBody = ""; 
    var leanSenderName = ""; 
    var leanSenderId = ""; 
    var randUsers = []; 

function varReset(leanBody, leanSenderName, leanSenderId, randUsers){ 
    leanBody = ""; 
    leanSenderName = ""; 
    leanSenderId = ""; 
    randUsers = []; 
    console.log("The variables were set"); 
} 


Parse.Cloud.afterSave("Lean", function(request, leanBody, leanSenderName, leanSenderId, randUsers) { 
    varReset(leanBody, leanSenderName, leanSenderId, randUsers); 

    var leanQuery = new Parse.Query("Lean"); 
    leanQuery.first({ 
    success: function(results){ 
     console.log("The first object was retrieved"); 
     leanBody = (results.get("messageBody")); 
     leanSenderName = (results.get("senderName")); 
     leanSenderId = (results.get("senderId")); 
     getUsers(leanBody, leanSenderId, leanSenderName, randUsers); 
     results.destroy({ 
     success: function(results){ 
      console.log("deleted"); 
     }, error: function(results, error){ 
     } 
     }); 
    }, error: function(error){ 
    } 

    }); 
}); 

    function getUsers(randUsers, response, leanBody, leanSenderName, leanSenderId, randUsers){ 
    var query = new Parse.Query(Parse.User); 
    query.find({ 
     success: function(results, leanBody, leanSenderName, leanSenderId, randUsers){ 
      var users = []; 
      console.log("results = " + results); 
      //extract out user names from results 
      for(var i = 0; i < results.length; ++i){ 
       users.push(results[i].id); 
      } 
      for(var i = 0; i < 3; ++i){ 
       var rand = users[Math.floor(Math.random() * users.length)]; 
       var index = users.indexOf(rand); 
       users.splice(index, 1); 
       randUsers.push(rand);********************************************** 
       } 
      console.log("rand = " + rand); 
      console.log("The random users are " + randUsers); 
      response.success(sendLean(leanBody, leanSenderId, leanSenderName)); 
     }, error: function(error){ 
      response.error("Error"); 
     } 
    }); 
    } 

    function sendLean(randUsers, leanBody, leanSenderName, leanSenderId){ 
    var Mission = Parse.Object.extend("Mission"); 
    var mission = new Mission(); 
    for(var i = 0; i < 3; ++i){ 
     mission.set("messageBody", leanBody); 
     mission.set("recipientId", randUsers[i]); 
     mission.set("senderName", leanSenderName); 
     mission.set("senderId", leanSenderId); 
     mission.save(null, { 
     success: function(mission) { 
      // Execute any logic that should take place after the object is saved. 
      alert('New object created with objectId: ' + mission.id); 
     }, 
     error: function(mission, error) { 
      // Execute any logic that should take place if the save fails. 
      // error is a Parse.Error with an error code and message. 
      alert('Failed to create new object, with error code: ' + error.message); 
     } 
     }); 
    } 
    } 
+1

문제를 좀 더 격리시켜 주시겠습니까? – rafaelcastrocouto

+0

다음은'getUsers' 호출입니다 :'getUsers (leanBody, leanSenderId, leanSenderName, randUsers);', 여기'getUsers' :'getUsers (randUsers, 응답, leanBody, leanSenderName, leanSenderId, randUsers) 매개 변수가 일치하지 않고 b)'randUsers'가 두 번 있습니다. –

답변

1

당신은 그것을 인수함으로써 getUsers 기능에 로컬 randUsers을 정의 getUsers를 호출 할 때 인수에서 제거하거나 전달해야합니다.

+0

leanBody가 randUsers입니까? 그래서 나는 그 논쟁을 어떤 순서로 통과 하는가? – ian

+0

예, 이름은 중요하지 않습니다. 전달한 첫 번째 값은 첫 번째 인수에 할당됩니다. 그래서 randUsers-> leanBody, response-> leanSenderId, leanBody-> leanSenderName, 등등 .. – orhanhenrik

+1

젠장, 나는 몰랐다. 감사! – ian

관련 문제