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);
}
});
}
}
문제를 좀 더 격리시켜 주시겠습니까? – rafaelcastrocouto
다음은'getUsers' 호출입니다 :'getUsers (leanBody, leanSenderId, leanSenderName, randUsers);', 여기'getUsers' :'getUsers (randUsers, 응답, leanBody, leanSenderName, leanSenderId, randUsers) 매개 변수가 일치하지 않고 b)'randUsers'가 두 번 있습니다. –