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