2017-03-07 37 views
0

我翻到了back4app,運行Parse,到目前爲止還沒有結束它。我正在研究一個簡單的雲代碼,似乎每一步都在打我。解析Cloudcode錯誤分支需要60秒+才能返回:爲什麼?

這樣的想法:送了一個通道字符串,通過做一個Parse.Installation簡單的查找,在第一個返回現場找到的記錄。當找到頻道時,就像魅力一樣工作。

問題:它需要60秒以上,如果沒有找到記錄返回。找到的記錄的返回時間通常是分秒。我一個javascript大師,並已試過無數變種無濟於事,和JSLint的似乎不想考了Parse.Cloudcode.Define塊。

的問題是:如何在結構上搞砸了我在這裏造成這種延遲?我根本沒有看到這個問題。任何想法非常歡迎:

Parse.Cloud.define("test", function(request, response) { 

       var query = new Parse.Query(Parse.Installation); 
       query.equalTo("channels", request.params.other); 
       query.descending("updatedAt"); 
       query.first({ 
          useMasterKey: true, 
          success: function(installation) { 
          response.success(installation.get("lastLoginAt")); 
          }, 
          error: function(error) { 
          response.error("test"); 
          } 
          }); 
       }); 

{爲useMasterKey編輯功能:真的......與時機的問題看到任何變化}

+0

唯一想到的是,你可能需要在你的mongodb中索引'通道'。其次,只要提到它,就不鼓勵使用masterkey,而是將'{useMasterKey:true}'作爲查詢的第一個參數。 – cYrixmorten

+0

因爲back4app管理Parse安裝,所以我沒有這種控制級別。我必須假設,因爲[渠道]是正確推送通知的關鍵,所以索引就位。我將調整代碼並運行它,作爲一種即時測量。 與B4A聊天,他們建議它*威力*是錯誤塊的結構,但我已經試過無數的款式都無濟於事。謝謝! –

回答

1

沒有看到任何明顯的問題,我就離開我怎麼的一個片段會寫它:

Parse.Cloud.define("test", function(request, response) { 
    var query = new Parse.Query(Parse.Installation); 
    query.equalTo("channels", request.params.other); 
    query.descending("updatedAt"); 
    query.first({useMasterKey: true}) 
     .then(function(installation) { 
      if (installation) { 
       response.success(installation.get("lastLoginAt")); 
      } else { 
       response.error("No installation with channel: " + request.params.other); 
      } 
     }) 
}); 
+0

cYrix:你是金。這工作,我沒有解釋爲什麼我的原始代碼不會。 60秒的延遲似乎是某處的一個深層錯誤。我原本有.then結構,但不是.fail塊。這樣做的伎倆,並希望有助於阻止其他人。謝謝。 –

+0

我的不好,我假設好塊會工作,只測試沒有找到記錄的塊。上面的代碼在兩種情況下都會產生一個141,這代表了代碼本身的不妥之處。我還沒有看到它,感嘆。顯然,我吸用JavaScript;) 我甚至剝去了一切,有一個簡單的返回塊。這需要超過60秒纔會返回「無值」錯誤。 有什麼不對勁也許這是一個back4app的問題? –

+0

嗯,不好意思。我沒有使用back4app的經驗。當Parse.com被關閉時,切換到heroku + mlabs – cYrixmorten

相關問題