2016-12-23 3 views
1

У меня есть интересный вопрос, который, как мне кажется, раньше не задавался, и должен быть достойным вызовом для некоторых из нас. Во-первых, я новичок в firebase - около 2 дней (если это). Я читаю документы, но не могу найти прямой ответ.Как остановить перезагрузку данных при обновлении Firebase

Моя ситуация такова: Я вытягивать пользовательские данные из базы данных в реальном времени, и он заполняет во многих областях в пределах моей страницы.

Проблема заключается в том: Каждый раз, когда страница перезагружается (даже по навигации изменилась, скажем, между home.html и page2.html) области остаются пустыми, пока сценарий не перезагружает данные.

Мой вопрос: Есть ли способ, где я могу только загрузить данные один раз, так что проблема не повторится?

Я пробовал:

  1. Используя функцию once() встроенный в firebase. Не работает, потому что скрипт все равно вызывается каждый раз, когда страница загружается.

Другие возможные решения: Могу ли я, возможно, хранить переменную, которая указывает, имеет ли или нет данные были отправить раньше? Как мне это сделать?

Любые идеи? Спасибо всем!

ответ

2

Существует несколько способов достижения этого. Вы можете написать одностраничное приложение, чтобы каждая страница не была перезагружена (посмотрите на угловые, реагировать и т. Д.), Или вы можете использовать браузеры localStorage для хранения результатов.

2

Возможно, вы захотите рассмотреть вопрос об использовании session storage или local storage.

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

Я думаю, что для этой ситуации хранения сеанса было бы достаточно, так как вы не хотели бы, чтобы данные пользователя сохранялись навсегда, только что-то изменилось.

Чтобы выполнить эту задачу, вы могли бы сделать что-то вроде

if(sessionStorage.getItem("updated")){ 
    // get the data from the session storage 
} else { 
    // get from firebase 
    sessionStorage.setItem("updated",true); 
} 

всякий раз при загрузке страницы.

Надеюсь, это поможет.