我一直试图运行我的Parse Cloud Code一段时间,似乎无法解决这个问题:
我有一个名为 IDArray 的Parse objectId
数组。然后我发送数组作为PFCloud
调用的参数。将阵列发送到Cloud Code后,我无法似乎成功创建了for loop
,并在Parse for 上更新了存储为“点”的数值每个 objectId
。
简而言之,这就是我想要完成的任务:
for loop
通过每个
objectId
并为每个ID执行操作。我一直试图让它工作一段时间,但没有运气。这是我一直试图操纵的代码 - 希望它会给某人一个回答我问题的起点。
Parse.Cloud.define('updateAllUsers', function(request, response) {
var UserData = Parse.Object.extend('UserData');
var query = new Parse.Query(UserData);
var list = request.params.listID;
var currentuser = request.params.user;
for (var i = 0; i < list.length; i++) {
var userdata = list[i];
query.get(userdata, {
success: function(UserData) {
response.success('Should add up');
UserData.addUnique('Done', +1);
UserData.save();
},
error: function() {
response.error('something went wrong' );
}
});
}
});
如果有人能帮助我,我将非常感激。谢谢
答案 0 :(得分:1)
我认为问题是你多次发送回复,你应该等待所有承诺完成然后发送回复:
Parse.Cloud.define('updateAllUsers', function(request, response) {
var UserData = Parse.Object.extend('UserData');
var query = new Parse.Query(UserData);
var list = request.params.listID;
var currentuser = request.params.user;
function checkUserData(userdata){ // returns parse promise for a particular userdata
return query.get(userdata).then(function(){
UserData.addUnique('Done', +1);
UserData.save();
});
}
Parse.Promise.when(list.map(checkUserData)) // mapping all the elements in the list to resp promises
.then(function(){ // on success
response.success('Should add up');
}).catch(function(e){ // on failure
response.error('something went wrong' );
});
});
修改:如果由于某些原因导致map
不可用(如果旧浏览器或list
不是正常的javascript数组),您可以执行以下操作:
Parse.Cloud.define('updateAllUsers', function(request, response) {
var UserData = Parse.Object.extend('UserData');
var query = new Parse.Query(UserData);
var list = request.params.listID;
var currentuser = request.params.user;
var promises = [];
function checkUserData(userdata){ // returns parse promise for a particular userdata
return query.get(userdata).then(function(){
UserData.addUnique('Done', +1);
UserData.save();
});
}
for(var i=0;i<list.length;i++){
promises.push(checkUserData(list[i]));
}
Parse.Promise.when(promises) // once all the promises are resolved...
.then(function(){ // on success
response.success('Should add up');
}).catch(function(e){ // on failure
response.error('something went wrong' );
});
});