繁体   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