@SpideR-KOSS

Как правильно в SPA получать данные из базы?

Добрый день!

Допустим есть простой блог на Vue, SPA.

Данные хранятся в базе MongoDB. Сервер на NodeJS.

Vue позволяет отображать данные без перезагрузки страницы.

Как сделать чтобы при изменении и добавлении данных в базе они отображались в SPA без перезагрузки?
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Самое правильное решение - держать постоянно открытым websocket-соединение между фронтом и бэком. При добавлении данных в БД отправлять с бэка во все websocket'ы уведомление о добавленных данных.

Костыльный вариант - по таймеру с фронта опрашивать бэк о наличии новых данных.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mamont80
Думаю вопрос сложнее чем кажется. Не так важно через какой механизм вы будете получать обновления, вебсокет, longpooling или простой опрос. Я бы начал с простого опроса, потом бы переделал.
Юзер может быть за прокси, а прокси не держат вебсокет. Может "мигнуть" интернет, браузер может выгрузить вкладку, комп заснул. Может произойти много всякого и вы не должны полагаться на постоянство связи клиент-сервер.
Важно что клиент должен знать своё текущее состояние и получать список изменений состояния. Обычно состояние имеет номер, при изменении номер увеличивается. Зная номер предыдущего состояния, можно получить список изменений до последнего состояния. Это общая концепция. Возможно у вас могут быть ещё конфликты правок, уже сами прикинте на сколько сложным будет dif. Может быть что список изменений слишком большой и проще перегрузить всё состояние, чем принять dif.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы