Parse.com后台作业云代码无法调用方法'那么'的未定义

Parse.com Background Job cloud code cannot call method 'then' of undefined

本文关键字:那么 未定义 方法 调用 后台作业 com 代码 Parse      更新时间:2023-09-26

我是cloudcode和javascript的新手,所以promise的概念仍然不清楚,我试图上传读取一个级别文件,并使用后台作业将其保存到class Levels,但在下面的代码中我遇到了错误。无法调用未定义的方法'then'

我不确定出了什么问题?当你的概念不清楚时,调试是非常困难的,所以如果有人能澄清我的Parse promise概念,并帮助解决这段代码中的上述错误,那将是非常有帮助的。

Parse.Cloud.job("uploadLevelJob" , function(request , status){
    var Levels= Parse.Object.extend("Levels");
    var levels= request.params.arrayOfLevels;
    var promise = new Parse.Promise.as();
    _.each(levels , function(level){
        promise = promise.then(function() {
            var tempObj = new Levels();
            tempObj.set("levelId",parseInt(level[i][0]));
            tempObj.set("levelName",level[i][1]);
            return result.save();          
        });
        return promise;
    }).then(function(){
        status.success("Uploaded ! ");  
    });
});

您似乎试图串行使用promise,但实际上您可以在您的情况下使用并行promise。因为每个保存都是独立的。顺便说一下,iresult在您的代码中似乎是未定义的。我假设levels是一个类似于[[levelId, "levelName"], ...] 的阵列

var Levels = Parse.Object.extend("Levels");
Parse.Cloud.job("uploadLevelJob" , function(request , status){
  var levels = request.params.arrayOfLevels;
  var promises = [];
  _.each(levels , function(level) {
    var tempObj = new Levels();
    tempObj.set("levelId",parseInt(level[0]));
    tempObj.set("levelName",level[1]);
    promises.push(tempObj.save());
  });
  return Parse.Promise.when(promises).then(function() {
    status.success("Migration completed successfully.");
  }, function(error) {
    status.error("Uh oh, something went wrong.");
  });
});