2014-11-08 37 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."); 
    }); 

}); 
相關問題