Как Метеор обрабатывает зависимые неудачные операции по оптимизации?
Как оптимистичный пользовательский интерфейс 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.