Синхронизация данных сервера MongoDB с локальным хранилищем IndexedDB

Я пытаюсь оценить с помощью IndexedDB решение автономной проблемы. Он будет заполнен данными, которые в настоящее время хранятся в базе данных MongoDB (как есть).

Как только данные хранятся в IndexedDB, его можно изменить на сервере MongoDB, и мне нужно распространить эти изменения. Есть ли какая-либо существующая структура или библиотека, чтобы сделать что-то вроде для Mongo. Я уже знаю о CouchDB/PouchDB и не изучаю эти два.

Ответ 1

Я не работал с IndexDB, но проблема дизайна не такая уж необычная. Мое понимание вашего приложения заключается в том, что, когда клиент делает соединение с MongoDB, вы вытягиваете набор документов для локального хранения и отключаетесь. Затем клиент может делать что-то локально (не подключен к серверу данных), а затем отжимать изменения.

Как я вижу, вы должны обрабатывать два общих случая:

  • когда сервер MongoDB обновляется и прерывает непрерывность с клиентом, клиент должен будет
    • опрос для данных (таймер?) или
    • сохранить открытое websocket, чтобы уведомления о потоке через канал
  • когда пользователю нужно нажать на измененные данные, поддержите трубку
    • вы можете повторно подключиться асинхронно, проверить изменения состояния (разрешать конфликты в соответствии с вашими бизнес-правилами)
    • иметь интерфейс на стороне сервера (легкий) для обработки конфликтов (в зависимости от сложности вашего приложения, сравнение временных штампов изменений состояния в MongoDB с индексами IndexedDB должно быть достаточным)