簡體   English   中英

解析雲代碼:beforeSave查詢返回代碼不起作用

[英]Parse Cloud Code: beforeSave query return code not working

任何想法為什么我的代碼片段在檢索結果后似乎沒有進入query.find()函數的分支?

 Parse.Cloud.beforeSave("AccountTest", function(request, response) { var email = request.object.get("email"); var accountTest = new Parse.Object.extend("AccountTest"); var query = new Parse.Query(accountTest); console.log(email); query.equalTo("email",email); query.find({ success: function(results) { console.log("checking"); if (results.length == 0) { console.log("SUCCESS"); response.success(); }else{ console.log("FAIL"); response.error("E-mail has already been used"); } console.log('no branch taken'); }, error: function() { response.error("Something went wrong with the query"); } }); console.log("OUT OF SCOPE") response.error("Something went wrong"); }); 

登錄parse.com會記錄電子郵件和“OUT OF SCOPE”和“出錯了”但它從未進入成功或錯誤分支,任何想法? 我無法弄清楚query.find()函數出了什么問題。

您不需要new關鍵字來擴展Object。

var accountTest = new Parse.Object.extend("AccountTest");

應該

 var accountTest =  Parse.Object.extend("AccountTest");

其次是你的代碼,這是正確的。

也,

var email = request.object.get("email");

上面的行將從請求對象獲取郵件字段。 該對象尚未保存到DB中。 所以,沒有匹配的記錄。 因此,它不會進入查找塊。 如果您嘗試使用已存在的電子郵件字段的值保存對象,那么您的代碼以及上述更改將起作用。

我猜測AccountTest可能是用戶對象。 如果這是正確的,請嘗試添加

Parse.Cloud.useMasterKey();

在執行查詢之前。

由於find函數的異步性質! find函數完成更改之前,您的beforeSave代碼會觸發最后一行response.error 當您調用find函數時,由於其異步性質,它會立即返回。 它的回調只有在完成后才會被調用。 如果你只是刪除你的最后一行response.error("Something went wrong"); 你的功能應該按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM