background - Parse.com : query. 每个并行执行,达到限制

标签 background parse-platform parse-cloud-code

我正在运行批处理作业,我希望它们针对每个查询结果连续运行 问题是 query.each 似乎并行执行所有内容

如何更改代码以使所有内容串行执行?

Parse.Cloud.job("fetchMenus", function(request, status) {

  var counter = 0;
  // Query for all users
  var LocationSP = Parse.Object.extend("Location");
  var query = new Parse.Query(LocationSP);
  query.doesNotExist("menu");
  query.equalTo("city_lc","new york");
  // query.limit(10);
  var p = Parse.Promise.as("");

  query.each(function(location) {

    p = p.then(function(){

    if (counter % 100 === 0) {
        // Set the  job's progress status
        status.message(counter + " users processed.");
      }
    // console.log(location);
    // console.log(location.get("location_id"));

        Parse.Cloud.run('getMenu2', {alias: location.get("location_id") }, {
          success: function(result) {
            // result is 'Hello world!'
            counter += 1;
            return Parse.Promise.as("1");
          },
          error: function(error) {
            return Parse.Promise.as("1");
          }
        });
    })

    return p;


  }).then(function() {
    // Set the job's success status
    status.success("Migration completed successfully.");
  }, function(error) {
    // Set the job's error status
    status.error("Uh oh, something went wrong." + error);
  });
});

最佳答案

query.eachParse.Cloud.run 都返回一个 Promise,因此您可以简单地编写如下:

Parse.Cloud.job("fetchMenus", function(request, status) {
  var LocationSP, counter, query;
  counter = 0;
  LocationSP = Parse.Object.extend("Location");
  query = new Parse.Query(LocationSP);
  query.doesNotExist("menu");
  query.equalTo("city_lc", "new york");
  return query.each(function(location) {
    if (counter % 100 === 0) {
      status.message(counter + " users processed.");
    }
    return Parse.Cloud.run('getMenu2', {
      alias: location.get("location_id")
    }).then(function(result) {
      counter += 1;
      return Parse.Promise.as("1");
    }, function(error) {
      return Parse.Promise.as("1");
    });
  }).then(function() {
    return status.success("Migration completed successfully.");
  }, function(error) {
    return status.error("Uh oh, something went wrong." + error);
  });
});

关于background - Parse.com : query. 每个并行执行,达到限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27191542/

相关文章:

javascript - 在 Parse 中一次更新多个对象

javascript - 从 Parse.com 删除特定对象

css - HTML5 网站使用 CSS,背景和标题问题

javascript - 将所有 URL 重定向到 Parse.com 上的 index.html

java - Parse.com 推送通知不起作用

javascript - 如何使用 javascript API 从 Parse 获取上传的图像

javascript - 解析服务器注册无效 session token 错误

javascript - 无缝连接可重复和不可重复的背景

Android 背景颜色设置为灰色而不是@android :color/white

drupal - 根据用户的选择更改 Drupal 页面的背景图像...?