gpt4 book ai didi

javascript - 使用 Parse.com 在查询中保存对象仅限于第一行?

转载 作者:行者123 更新时间:2023-12-03 11:48:23 26 4
gpt4 key购买 nike

我的问题应该很常见。我有很多用户,想要根据他们的评分更新他们的排名位置。

因此,我创建了一个 CloudCode 函数,调用它来更新这些位置。我进行查询并按其“评分”对其元素进行排序。之后,我一一获取每个元素并更新它们的“位置”值。

代码非常简单:

Parse.Cloud.define("update_ranking", function(request, response) {
query = new Parse.Query("Scoring");
query.descending("scoring");
query.find({
success: function(results) {
for(var i = 0; i < results.length; ++i) {
a = results[i];
console.log("Position of " + a.get("name") + ": " + a.get("position") + ", new position: " + i );
a.set("position", i + 1);
a.save();
// a.save(null, {
// success: function(a) {
// console.log("Posicion de " + a.get("name") + ": " + a.get("position"));
// a.set("position", i);
// a.save();
// },
// error: function(a, error) {
// console.log('No se pudo guardar el objeto con el error: ' + error.message);
// }

// });
}
response.success('All players updated');
}
});
});

令我惊讶的是,只有查询中的三个第一个元素的位置得到更新。其余元素保留在 ddbb 中,位置相同。

如果我看到控制台日志:

I2014-09-20T11:37:51.331Z] Position of Fallen: 2, new position: 2
I2014-09-20T11:37:51.333Z] Position of Paco: 1, new position: 3
I2014-09-20T11:37:51.334Z] Position of Pepe: 19, new position: 6
I2014-09-20T11:37:51.334Z] Position of Dime: 12, new position: 1
I2014-09-20T11:37:51.334Z] Position of Otto: 14, new position: 12
I2014-09-20T11:37:51.336Z] Position of Rick: 16, new position: 11
I2014-09-20T11:37:51.337Z] Position of Charles: 17, new position: 15

它确实表明我正在获取数据库中的所有元素,并且它们的位置应该相应地更新。但是在 a.save() 并查看 ddbb 之后,只有前三个元素被更新。

这有道理吗???

最佳答案

有几个可能的原因:

  • save() 操作是异步的,但您实际上是通过response.success 提前完成了该函数。
  • 如果有大量保存,您可能会达到突发限制

无论哪种方式,将所有要保存的对象放入一个数组中,然后调用 Parse.Object.saveAll,应该会处理它:

var toBeSaved = [];

for(var i = 0; i < results.length; ++i) {
a = results[i];
a.set("position", i + 1);
toBeSaved.push(a);
}

Parse.Object.saveAll(tobeSaved, {
success: function () {
response.success('All players updated');
}, error: function (err) {
// handle error
}
});

关于javascript - 使用 Parse.com 在查询中保存对象仅限于第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25948465/

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