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