Parse platform 解析后台作业each()不会遍历所有记录吗?

Parse platform 解析后台作业each()不会遍历所有记录吗?,parse-platform,Parse Platform,我编写了一个云作业,在用户对象中插入用户名字和姓氏的小写版本,以便我可以从我的客户端应用程序执行搜索 当我在一个拥有40个用户的dev parse应用程序上运行这项工作时,效果非常好 当我在我的生产应用程序上运行这个时,它并没有更新我的所有记录。目前我有数千名用户,我希望这项云工作能够照顾到所有用户,如下所述: “新的Parse.Query对象上的each方法允许您这样做。即使一个集合中有上万个或更多的对象,它也会返回其中的每一个对象,让您有机会根据需要修改它们。” 那么我的问题是为什么这个函

我编写了一个云作业,在用户对象中插入用户名字和姓氏的小写版本,以便我可以从我的客户端应用程序执行搜索

当我在一个拥有40个用户的dev parse应用程序上运行这项工作时,效果非常好

当我在我的生产应用程序上运行这个时,它并没有更新我的所有记录。目前我有数千名用户,我希望这项云工作能够照顾到所有用户,如下所述:

“新的Parse.Query对象上的each方法允许您这样做。即使一个集合中有上万个或更多的对象,它也会返回其中的每一个对象,让您有机会根据需要修改它们。”

那么我的问题是为什么这个函数会留下超过一半的数据库?它只对一群用户起作用,也许几百个

如何使此函数影响用户表中的整个数据集

Parse.Cloud.job("migration1", function(request, status) {
  // Set up to modify user data
  Parse.Cloud.useMasterKey();
  // Query for all users
  var query = new Parse.Query(Parse.User);
  query.each(function(user) {
      // Set and save the change
      var firstname = user.get("firstname");
      if(firstname) {
        user.set("searchfirstname", firstname.toLowerCase());   
      } else {
        user.set("searchfirstname", "");    
      }
      var lastname = user.get("lastname");
      if(lastname) {
        user.set("searchlastname", lastname.toLowerCase()); 
      } else {
        user.set("searchlastname", ""); 
      }
      return user.save();
  }).then(function() {
    // Set the job's success status
    status.success("search migration completed successfully.");
  }, function(error) {
    // Set the job's error status
    status.error("Uh oh, something went wrong with search migration");
  });
});
编辑: 好的,当我查看错误日志时,我看到:

E2014-10-18T15:48:49.984Z] v63: Ran job searchMigration with:
  Input: {}
  Failed with: TypeError: Cannot call method 'toLowerCase' of undefined
我试着用我能想到的任何方式检查未定义,但我仍然遇到同样的问题。 我试图检查未定义的是:

if(lastname === undefined  || lastname === void 0 || typeof lastname == 'undefined') ...
我仍然得到未定义错误的toLowerCase,我认为这就是为什么作业停止后不会影响我的所有用户表


有什么建议吗?

所以,我终于明白了为什么这项工作没有通过所有的记录,但在“随机”完成一些记录后就会停止

我为用户设置了一个AfterSave钩子,它在上述作业的每次迭代中都会被触发。。。 在这种情况下,保存后,它有时会生成错误并使作业失败

因此,出于某种原因,我认为在作业内部对用户进行保存不会触发after save钩子

就这样。现在一切都好了