gpt4 book ai didi

javascript - 多个查询解析 Javascript

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:53 25 4
gpt4 key购买 nike

我一直在开发一个模拟 android 应用程序,想编写 Parse Background 作业。我的 Parse 用户是客户,我销售客户可以订阅的服务。 _User 类用于客户,CustomerSubscriptions 类用于订阅。我正在尝试更新所有客户的账单,但我做不到。

有人可以引导我朝着正确的方向前进吗?

谢谢

     Parse.Cloud.job("billCustomers", function(request, response) {

Parse.Cloud.useMasterKey();
var query = new Parse.Query(CustomerSubscriptions);
var array = new Array();
//For each registered user
query.find().then(function(results) {
for (var i = 0; i < results.length; ++i) {
var username = results[i].get("username");
array[username] = results[i].get("Price");
}

var query2 = new Parse.Query(Parse.User);

return query2.find();
}).then(function(results) {
for (var i = 0; i < results.length; ++i) {
var username = results[i].get("username");
results[i].set("Bill",array[username]);
results[i].save();

}
}, function(error) {
response.error("Error");
});

});

最佳答案

问题出在 results[i].save(); 那是一个异步操作。您的函数很可能在所有保存完成之前返回。我会将您所有的 promise 收集在一个数组中,然后在它们全部完成后使用 Parse.Promise.when 返回。完成后,您还需要调用 response.success()。

尝试这样的事情:

.then(function(results) {

var savePromises = []; // this will collect save promises
_.each(results, function(result) { // or a for loop, if you don't use underscore

var username = result.get("username");
result.set("Bill",array[username]);
savePromises.push(result.save());
});

// now do the saves
return Parse.Promise.when(savePromises);
}, function(error) {
response.error();
}).then(function() {
// this should execute once all the saves are done
// Set the job's success status
response.success("saves completed");
});

我使用下划线遍历结果数组。

关于javascript - 多个查询解析 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28708651/

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