Javascript 解析云代码:beforeSave查询返回代码不工作

Javascript 解析云代码:beforeSave查询返回代码不工作,javascript,parse-platform,Javascript,Parse Platform,你知道为什么我的代码片段在检索结果后没有进入query.find()函数的分支吗 Parse.Cloud.beforeSave(“AccountTest”),函数(请求、响应){ var email=request.object.get(“email”); var accountTest=new Parse.Object.extend(“accountTest”); var query=newparse.query(accountTest); 控制台日志(电子邮件); query.equalT

你知道为什么我的代码片段在检索结果后没有进入query.find()函数的分支吗

Parse.Cloud.beforeSave(“AccountTest”),函数(请求、响应){

var email=request.object.get(“email”); var accountTest=new Parse.Object.extend(“accountTest”); var query=newparse.query(accountTest); 控制台日志(电子邮件); query.equalTo(“电子邮件”,email); 查询.查找({ 成功:功能(结果){ 控制台日志(“检查”); 如果(results.length==0){ 控制台日志(“成功”); 回答:success(); }否则{ 控制台日志(“失败”); 响应。错误(“已使用电子邮件”); } console.log(“未执行分支”); }, 错误:函数(){ response.error(“查询出错”); } }); console.log(“超出范围”) 错误(“出了什么问题”); });扩展对象不需要新关键字

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

 var accountTest =  Parse.Object.extend("AccountTest");
然后是代码的其余部分,这是正确的

而且


上面的行将从请求对象获取邮件字段。对象尚未保存到数据库中。因此,没有匹配的记录。因此,它不会转到find块。如果您尝试使用已存在的email字段值保存对象,那么您的代码以及上述更改将起作用。

我猜AccountTest可能是用户对象。如果这是正确的,请尝试添加

Parse.Cloud.useMasterKey();

执行查询之前。

因为
find
函数的异步性质!您的
beforeSave
代码命中了
响应的最后一行。在
find
函数完成更改之前出现错误。调用
find
函数时,由于其异步性质,它会立即返回。它的回调只有在完成后才会被调用。如果您只是删除最后一行
response.error(“出错”)您的功能应按预期工作。

这并没有解决我的问题。。它仍然没有进入分支。在这种情况下,您是否尝试检查您的解析数据库中是否有与查询匹配的结果?起初数据库是空的,所以我创建了一个记录。。因此查询应该返回至少一条记录,因为匹配的email字段var email=request.object.get(“email”);这就是我所说的,我已经在数据库中创建了一个记录,其中包含一个电子邮件字段,该字段的值与我在请求中使用的值相同。因此,find函数应该至少返回一个结果。AccountTest是什么类型的对象?不,它们不是用户对象,只是一些字段。没问题,我还建议您将代码更改为使用Promises,而不是使用主干样式的成功/错误回调。当涉及到异步行为时,您的代码将更具可读性
Parse.Cloud.useMasterKey();