2015-12-02 74 views
1

我試圖通過雲代碼刪除文件。 但此腳本失敗:解析雲功能失敗

Parse.Cloud.define("deleteFile1", function(request, response) { 
    Parse.Cloud.httpRequest({ 
     method: 'DELETE', 
     url: 'https://api.parse.com/1/files/****.png', 
     headers: { 
     "X-Parse-Application-Id": "*******", 
     "X-Parse-REST-API-Key" : "*******" 
     }, 
     success: function(httpResponse) { 
      console.log('Delete succeeded ' + httpResponse.text); 
     response.success(); 
     }, 
     error: function(httpResponse) { 
       response.error("failed"); 
     } 
     }); 
}); 

有錯誤141,腳本失敗。

我這樣稱呼它:

Map<String, String> map = new HashMap<String, String>(); 
    ParseCloud.callFunctionInBackground("deleteFile1", map, new FunctionCallback<Object>() { 
     @Override 
     public void done(Object object, ParseException e) { 
      if(e == null){ 

      }else{ 
       System.out.println(e.getCode()); 
       utils.toast_error("Couldn't delete image.. try again"); 
      } 

     } 
    }); 

我檢查我的主要的,他們是正確的。所以腳本本身在某些方面肯定是錯的。我想也許是網址。 /文件假設是圖像文件綁定的ParseFile?我試着改變「請求」&「響應」到httpResponse等,但它沒有任何區別。

+0

呵呵沒問題!是的,我也看到了,主要區別是什麼? – Benni

+0

[Heroku](https://www.heroku.com/home)基本上只是Cloud Code的一個更大,更好,功能全面的版本。 (以同樣的方式,麥克拉倫P1就像一個更新的,功能齊全的T型福特...) –

回答

1

更新代碼現在至少可以正常運行,並且您能夠捕獲錯誤。

可以通過修改你的錯誤處理程序返回的實際消息返回httpResponse.text

error: function(httpResponse) { 
     response.error("failed " + httpResponse.text); 
    } 

起初,我用錯了X-Parse-REST-API-Key並得到以下錯誤:

{ 
    "code": 141, 
    "error": "failed {\"error\":\"unauthorized\"}\n" 
} 

確保使用MASTER鍵:X-Parse-Master-Key。這固定在我身邊的代碼,它運行良好。


原始代碼失敗,因爲你的時候,它已經完成了沒有你的反應叫success()

以下是調用/deleteFile1時收到的JSON響應;它表明,這就是問題所在:

{ 
    code: 141 
    error: "success/error was not called" 
} 

如果你看Parse Cloud Code docs,你會看到,每個方法使用response(或者在你的代碼中,httpResponse)參數,當它已經完成了調用response.success()

總是請閱讀Parse發回給您的回覆 - 這可能有助於理解錯誤。


找到相關的帖子,其中建議同樣的事情的答案:

+0

請參閱我的編輯,我的Parse.com上的日誌信息選項卡現在從腳本記錄「失敗」。 – Benni