Моя проблема, по-видимому, очень распространена. У меня есть куча пользователей и вы хотите обновить свою рейтинговую позицию в соответствии с их скорингом.Сохранение объектов в запросе с помощью Parse.com ограничено первыми рядами?
Итак, я создал функцию 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
это действительно показывает, что я получаю все элементы в базе данных, и что их позиции должны быть udpated соответственно. Но после a.save() и загляните в ddbb, обновятся только первые три элемента.
Это имеет смысл ???
Спасибо, Том, это была проблема. Я уже решил, вытащив response.success, но получил ошибку в журнале, и ваше решение решило все. Кстати, сколько экономит, по вашему мнению, может привести к ограничению всплеска? –
Зависит от вашего плана. См. Больше здесь: https://www.parse.com/questions/burst-limit –
Спасибо, Том, но я не уверен, сколько запросов будет выполнять моя функция javascript. Предположим, у нас есть 1000 игроков, saveAll будет одним ударом, или это произвело бы 1000 хитов? –