gpt4 book ai didi

parse-platform - 解析 : Trying multiple query in a function of Parse Cloud code. 第二个查询似乎不起作用

转载 作者:行者123 更新时间:2023-12-01 00:58:57 25 4
gpt4 key购买 nike

我正在尝试在 Parse 云函数中运行多个查询。第二个查询没有得到
执行

Parse.Cloud.beforeSave("PhoneNumbers", function(request, response) {

// Check if the same phone number for the same user exists
var PhoneNumbersObject = Parse.Object.extend('PhoneNumbers');

var duplicationQuery = new Parse.Query(PhoneNumbersObject);
duplicationQuery.equalTo('user', Parse.User.current());
duplicationQuery.equalTo('phoneNumber', request.object.get("phoneNumber"));

duplicationQuery.count({
success: function(count) {
if (count > 0) {
response.error("This number is already stored");
}
},
error: function(error) {
response.error("Error " + error.code + " : " + error.message + " when storing phone number");
}
});

var firstPhoneNumberQuery = new Parse.Query(PhoneNumbersObject);
firstPhoneNumberQuery.equalTo('user', Parse.User.current());

firstPhoneNumberQuery.find({ // <<<<< find doesn't work
success: function(results) {
if ( results.length == 0 ) {
console.log("User's first telephone number"); // <<< Never reaches here
request.object.set("primary", true);
} else {
console.log("Hello"); // <<< Never reaches here
}
},
error: function(error) {
console.log("Bye");
response.error("Query failed. Error = " + error.message);
}
});

response.success();

});

最佳答案

问题是查询是异步的。在调用 response.success() 之前,您无需等待查询完成。 .

想想你对 firstPhoneNumberQuery.find() 的电话就像把鸡蛋煮沸一样,successerror block 是你完成后要做的事情。

调用 response.success()就像告诉清洁工你已经完成了,他们可以扔掉任何仍在“ cooking ”的东西。

使用 promises 来避免这个问题,以及移动 response.success()在查询的 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()根据需要阻止。

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

https://parse.com/docs/js_guide#promises

关于parse-platform - 解析 : Trying multiple query in a function of Parse Cloud code. 第二个查询似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25215712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com