gpt4 book ai didi

parse-platform - Parse.com - 修改后台作业中的所有用户 .each() 不适用于订单并且 .find() 完成得太快

转载 作者:行者123 更新时间:2023-12-04 06:48:45 25 4
gpt4 key购买 nike

我正在尝试获取所有用户数据,并按年龄降序排列,然后修改每个人的年龄。但是当我使用 query.find() 时,它完成得太快了。只有前 2 或 3 个用户年龄会被正确保存。然后我尝试使用 query.each(),但它不适用于降序。

这是我使用 query.each() 时的代码,如果我不订购它们,它将正确保存所有用户,但我需要订购它们并根据订单更改他们的年龄。

Parse.Cloud.job("ChangeUserAge", function(request, status) {
Parse.Cloud.useMasterKey();
var counter = 0;
var query = new Parse.Query(Parse.User);
query.descending("age, name");
query.each(function(user) {
counter += 1;
user.set("age", counter);
return user.save();
}).then(function() {
// Set the job's success status
status.success("ChangeUserAge completed successfully.");
}, function(error) {
// Set the job's error status
status.error("ChangeUserAge went wrong.");
});
});

这是我使用 query.find() 时的代码,问题是完成得太快了。只有 2 或 3 个用户正确保存。

Parse.Cloud.job("RankingAllUserBasedOnDiamonds", function(request, status) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query(Parse.User);
query.descending("age, name");
query.find().then(function(results) {
for(var i = 0; i < users.length; i++)
{
var user = users[i];
user.set("age", i+1);
user.save();
}
}).then(function() {
// Set the job's success status
status.success("ChangeUserAge completed successfully.");
}, function(error) {
// Set the job's error status
status.error("ChangeUserAge went wrong.");
});
});

最佳答案

经过几个小时的研究和测试。终于找到了一种更新.find() 中所有对象的方法。它是 Parse.Object.saveAll。我将我需要更新的所有对象推送到一个数组中,然后使用成功和错误 block 调用 saveAll。

但正如 Fosco 所说,只有前 1000 条记录被返回,所以我已经使用起始索引参数手动运行了几次后台作业。

这是我的代码:

Parse.Cloud.job("RankingAllUserBasedOnDiamonds", function(request, status) {
Parse.Cloud.useMasterKey();
var usersToSave= [];
var query = new Parse.Query(Parse.User);
query.descending("age, name");
query.find().then(function(results) {
for(var i = 0; i < users.length; i++)
{
var user = users[i];
user.set("age", i+1);
usersToSave.push(user);
}
}).then(function() {
Parse.Object.saveAll(usersToSave, {
success: function(list) {
// All the objects were saved.
if (status) {
status.success("Update completed successfully.");
};
console.log("saveInBackground success");
}, error: function(model, error) {
// An error occurred while saving one of the objects.
if (status) {
status.error(error);
};
console.log("saveInBackground error: " + error.message);
});
}, function(error) {
// Set the job's error status
status.error("ChangeUserAge went wrong.");
});
});

希望能帮助遇到同样问题的人。

关于parse-platform - Parse.com - 修改后台作业中的所有用户 .each() 不适用于订单并且 .find() 完成得太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23960716/

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