Как Метеор обрабатывает зависимые неудачные операции по оптимизации?

Как оптимистичный пользовательский интерфейс Meteor обрабатывает отклонения сервера и ошибки при зависимых операциях?

Если я сделаю:

var item1Id = Items.insert({list: groceriesId, name: "Watercress"}); // op1
var item = Items.findOne({_id: item1Id});
Items.update(item, {$set: {name: "Peppers"}}); // op2

Items.insert({list: groceriesId, name: "Cheese"}); // op3

Если op1 терпит неудачу на стороне сервера, но преуспевает на стороне клиента, что случится с op2 а также op3?
Откатятся ли они оба?

1 ответ

Решение

Если op1 потерпит неудачу, тогда op2 будет откатан (потому что это обновление для несуществующего объекта). op3 будет успешным, если не будет атомарного сбоя.

Если вы хотите предотвратить запуск op3, если вы не уверены, что op1 был успешным, вы можете сделать это в обратном вызове из op1.

Другие вопросы по тегам