Parse platform 解析:在解析云代码的函数中尝试多个查询。第二个查询没有';好像不行

Parse platform 解析:在解析云代码的函数中尝试多个查询。第二个查询没有';好像不行,parse-platform,Parse Platform,我试图在Parse cloud函数中运行多个查询。第二个查询无法获取 执行 Parse.Cloud.beforeSave(“电话号码”),函数(请求、响应){ //检查同一用户是否存在相同的电话号码 var phonenumberobject=Parse.Object.extend('PhoneNumbers'); var replicationquery=newparse.Query(PhoneNumberObject); replicationQuery.equalTo('user',Par

我试图在Parse cloud函数中运行多个查询。第二个查询无法获取 执行

Parse.Cloud.beforeSave(“电话号码”),函数(请求、响应){

//检查同一用户是否存在相同的电话号码
var phonenumberobject=Parse.Object.extend('PhoneNumbers');
var replicationquery=newparse.Query(PhoneNumberObject);
replicationQuery.equalTo('user',Parse.user.current());
replicationquery.equalTo('phoneNumber',request.object.get('phoneNumber');
replicationquery.count({
成功:功能(计数){
如果(计数>0){
响应。错误(“此号码已存储”);
}
},
错误:函数(错误){
response.error(“error”+error.code+”:“+error.message+”存储电话号码时”);
}
});
var firstPhoneNumberQuery=新建Parse.Query(PhoneNumberObject);
firstPhoneNumberQuery.equalTo('user',Parse.user.current());

firstPhoneNumberQuery.find({/问题在于查询是异步的。在调用
response.success()
之前,您不会等待查询完成

想想你对
firstPhoneNumberQuery.find()
的调用,就像煮蛋一样,
success
error
块就是你完成后要做的事情

调用
response.success()
就像告诉清洁工你做完了,他们可以扔掉仍在“烹饪”的东西

使用承诺来避免此问题,并在查询的
success
处理程序中移动
response.success()
调用:

duplicationQuery.count({
    // ... success / error as above
}).then(function() {
    var firstPhoneNumberQuery = new Parse.Query(PhoneNumbersObject);
    firstPhoneNumberQuery.equalTo('user', Parse.User.current());
    // return the promise so we can keep chaining
    return firstPhoneNumberQuery.find();
}).then(function(results) {
    // ... success for find
    // then call success() here
    response.success();
}, function(error) {
    // ... error block for find
});
如您所见,您可以根据需要组合任意多个
then()

在此处了解有关承诺和链接的更多信息:

duplicationQuery.count({
    // ... success / error as above
}).then(function() {
    var firstPhoneNumberQuery = new Parse.Query(PhoneNumbersObject);
    firstPhoneNumberQuery.equalTo('user', Parse.User.current());
    // return the promise so we can keep chaining
    return firstPhoneNumberQuery.find();
}).then(function(results) {
    // ... success for find
    // then call success() here
    response.success();
}, function(error) {
    // ... error block for find
});