[英]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.