2014-11-08 41 views
0

我是新的云代码和JavaScript,所以承诺的概念仍然不清楚,我试图上传读取级别文件并将其保存到类级别使用后台工作,但在下面的代码中我得到错误无法调用方法'然后'的undefinedParse.com后台作业云代码不能调用未定义的方法'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 ! "); 
    }); 

}); 
+1

我不熟悉'Parse.com'但是从你的代码的外观上来看,错误是从'}),然后来了一个数组(函数() {status.success(“Upload!”);})'这是因为'_.each'方法不会返回一个值。 – 2014-11-08 04:39:38

回答

1

似乎您试图串联使用的承诺,但实际上你可以在你的情况下使用parallel promises。因为每次保存都是相互独立的。顺便说一句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."); 
    }); 

}); 
相关问题