checked
- это аттрибут, определенный на объекте Tasks
, как определено в этом приложении.
В Meteor окончательная запись этого объекта хранится на сервере (в MongoDB
), однако есть кеш-клиент, который также обрабатывается здесь, известный как MiniMongo
. Структура Meteor выполняет большую работу в фоновом режиме (через протокол DDP
), чтобы синхронизировать объекты сервера и клиентской стороны.
В этом случае происходит следующее, когда пользователь нажимает на флажке (обжиг кода 'click .toggle-checked'
событий) в Tasks.update
методе:
- Первой сторона клиента обновления MiniMongo Cache - это известно как
Optimistic UI
, и позволяет клиентскому UI быстро реагировать (не дожидаясь сервера)
- Отправить сообщение серверу (
Meteor Method
), что клиент хочет обновить объект Tasks
, установив переменную clicked
в новое значение.
- Сообщения запроса обновления, полученное сервер, который проверяет это действует операция, а также обрабатывает его (обновление
MongoDB
версии Tasks
объекта, или отказывается обрабатывать обновления по мере необходимости.
- сервер будет отправлять
DDP
обновления полученный статус Tasks
объекта для всех клиентов, которые подписались на публикацию, которая включает его.
- клиентов, которые ранее подписавшихся получат это
DDP
обновление и заменят их версию MiniMongo
с версией Сервера от Tasks
объекта, чтобы все клиенты находились в синхронизации с сервером.
Теперь в идеальном случае, когда сервер принимает изменения клиентов, новая версия Tasks
, полученная (на шаге 5) инициирующим клиентом, будет соответствовать объекту, который он оптимистически обновляет (на шаге 1).
Однако, реализуя все эти шаги, среда Meteor также синхронизирует другие клиенты и обрабатывает случай, когда сервер отклоняет обновление или, возможно, модифицирует дополнительные поля, в зависимости от приложения.
К счастью, все это обрабатывается рамкой Meteor, и все, что вам нужно сделать, это позвонить Tasks.update
для всей этой магии!