在Parse Cloud For循环中查询

我一直试图运行我的Parse Cloud Code一段时间,似乎无法解决这个问题:

我有一个Parse objectId数组,叫做IDArray 。 然后我发送数组作为PFCloud调用的参数。 一旦数组被发送到Cloud Code,我似乎无法成功创建一个for loop ,并在Parse上为每个 objectId更新存储为“points”的数值。

简而言之,这就是我想要完成的任务:

  • 我只需要能够让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' );            }        });    } }); 

如果有人能帮助我,我将非常感激。 谢谢

我认为问题是你多次发送响应,你应该等待所有的承诺完成然后发送响应:

 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