2015-11-05 61 views
1

在我的解析雲代碼中,beforeSave中的HttpRequest已成功執行,但代碼在我有時間解析響應並確定是否要退回response.success()response.error()Parse.Com - 雲代碼中的HTTP方法,如何等待響應

我知道我在這裏錯過了一些東西,任何意見,從這裏的社區的想法將不勝感激。由於

Parse.Cloud.beforeSave(Parse.User, function (request, response) {  
   var user = request.object; 
    var key = user.get("recaptcha");  

     Parse.Cloud.httpRequest({ 
     url: 'https://www.google.com/recaptcha/api/siteverify?secret=<ITS A SECRET>&response=' + key, 
     success: function (httpResponse) { 
      var status = JSON.parse(httpResponse.text).success; 
      console.log(status); 
      if (status === false) { 
       response.error(); 
      } else { 
       response.success(); 
      } 
     } 
    }); 
}); 
+0

所以你想處理JSON內容? – Wain

+0

您好,感謝您與我聯繫,我只是想從json響應中提取狀態值,如果狀態爲true,那麼將數據(通過response.success())保存到用戶表中,否則不保存數據。 (response.error()) – user3524762

+0

所以你得到了狀態?或者您是否需要更改爲['success']以索引到JSON對象 – Wain

回答

2

我得到它的工作... Parse.Cloud.httpRequest()是異步的,這裏是爲我工作的解決方案,希望它可以幫助別人。

Parse.Cloud.beforeSave(Parse.User, function (request, response) {  
    var user = request.object; 
    var key = user.get("recaptcha"); 
    if (!request.object.existed()) { 
     return Parse.Cloud.httpRequest({ 
      method: 'POST', 
      headers: { 
       'Content-Type': 'application/json' 
      },     
      url: 'https://www.google.com/recaptcha/api/siteverify?secret=<ITS A SECRET>&response=' + key, 
      body: request, 
      success: function(httpResponse) { 
       var status = JSON.parse(httpResponse.text).success; 
       if (status === false) { 
        response.error(); 
       } else { 
        response.success(); 
       } 
      }, 
      error: function(httpResponse) { 
       response.error(httpResponse); 
      } 
     }); 
     } 
     }); 
+0

您也可以使用解析承諾。 –

相關問題