Parse platform 解析:在解析云代码的函数中尝试多个查询。第二个查询没有';好像不行
我试图在Parse cloud函数中运行多个查询。第二个查询无法获取 执行 Parse.Cloud.beforeSave(“电话号码”),函数(请求、响应){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
//检查同一用户是否存在相同的电话号码
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
});