2014-09-03 2 views
0

Я использую метод mongoose Schema.post ('save', postSaveCallback), чтобы отправлять обновления через сокет, чтобы отображать состояние мира в базе данных подписчикам в веб-браузер. Мне интересно, гарантирован ли, что ответ на сохранение сообщения будет выполнен в том же порядке, что и метод сохранения? Это гарантирует, что государство, представленное на клиенте, является точным состоянием мира. Если упорядочение этих обратных вызовов после сохранения не гарантируется в том же порядке, что и метод сохранения mongoose, это означает, что просмотр клиентов может потенциально не синхронизироваться с реальным представлением базы данных.Mongoose Schema Сообщение «save» callback ordering

Есть ли лучший способ сделать это или мой подход разумный?

Кроме того, гарантировано ли, что когда postSaveCallback называется операции сохранения на базовом mongodb, он полностью завершен и был успешным?

Был бы очень признателен за любые указания по этому вопросу.

Заранее спасибо.

ответ

0

Как и в случае с асинхронными вещами в целом, порядок не определен. postSaveCallback вызывается, когда операция сохранения возвращается, а затем выполняется, когда узел обходит ее. Некоторые из них занимают больше времени, чем другие, которые, возможно, были начаты раньше, поэтому обратные вызовы могут происходить практически в любом порядке. Вам нужно будет изменить, как ваши обратные вызовы координируют друг с другом, чтобы обеспечить необходимую согласованность в вашем состоянии.

save callback принимает аргумент err, поэтому естественно, что обратный вызов не означает, что операция выполнена успешно.