2015-05-20 28 views
-1

我試圖讓這個雲碼功能工作,但我不斷收到以下錯誤:Parse.com成功/錯誤不叫我打電話給成功的情況下/錯誤只出現一次,但它不工作

code: 141, message: "success/error was not called"

我肯定會傳入正確的請求對象,所以這不是問題。一切都應該保存正確,但它似乎並不喜歡我稱爲成功/錯誤。

這裏是我的代碼:

Parse.Cloud.define("redeemedCustomers", function(request, response) { 
    Parse.Cloud.useMasterKey(); 
    console.log(request.params.consumersToUpdate); 
    console.log(request.params.sref); 

    _.each(request.params.consumersToUpdate, function (b) { 
     var Referred = Parse.Object.extend("User"); 
     var referralQuery = new Parse.Query(Referred); 
     referralQuery.equalTo("objectId", b); 
     referralQuery.first().then(function(newbie){ 
      console.log(newbie); 
      newbie.set("ref", request.params.sref); 
      newbie.save({ 
       success: function() { 
        response.success("Credits were given."); 
       }, 
       error: function (error) { 
        response.error(error, "Credits were not given."); 
       } 
      }); 
     }) 
    }) 
}) 

回答

3

這是我提出的答案,解決了通話成功/錯誤問題。這也是承諾的一個很好的例子:

Parse.Cloud.define("redeemedCustomers", function(request, response) { 
    Parse.Cloud.useMasterKey(); 
    var newbiePromises = []; 

    var createNewbie = function(object) { 
     var promise = new Parse.Promise(); 
     var Referred = Parse.Object.extend("User"); 
     var referralQuery = new Parse.Query(Referred); 
     referralQuery.equalTo("objectId", object); 
     referralQuery.first().then(function(newbie) { 
      newbie.set("ref", request.params.sref); 
      promise.resolve(newbie.save()) 
     }, function(error){ 
      promise.reject(error); 
     }); 

     return promise; 
    } 

    _.each(request.params.consumersToUpdate, function(object){ 
     newbiePromises.push(createNewbie(object)); 
    }); 

    Parse.Promise.when(newbiePromises).then(function(){ 
     response.success("It worked."); 
    }, function(error) { 
     response.error(error); 
    }); 
}) 
-1

不能調用response.success或錯誤多次,你一次只能執行一定數量的線程。當使用_.each(consumer)時,它會在您每次執行referralQuery.first()請求時生成一個承諾。一旦達到限制,解析將返回一個錯誤,因爲在返回第一個承諾之前可能達到限制。此外,如果沒有消費者,它永遠不會得到答覆。

+0

謝謝你的迴應,但這沒有幫助。由於我正在測試它,所以我一直在發送一個長度爲1的數組,因此它既沒有碰到極限,也沒有處理null/NaN/undefined問題。您還可以在上面的代碼中看到每次調用成功和錯誤一次。 – rashadb

+0

看不到需要downvote。我的答案是有效的,當你傳遞一個更長的數組時,你需要解決一些問題。我確實看到了可能導致問題的其他兩個問題之一,但我想你可以弄明白。 – hybrdthry911

+0

雅,真正成熟。你不知道我給了你一個downvote。即使我這樣做了,它的有效性也會回升。無論是我的帖子值得一個downvote或不只是因爲你的答案是一個或者 - 一個與他們無關。如果你花了一些時間閱讀我的文章,你會看到成功/失敗曾被調用一次;我已經知道,所以你的回答沒有幫助。如果你想對我或任何其他人可能有同樣問題有幫助,也許你應該提出你在上面提到的額外問題。 – rashadb

相關問題