Этот вопрос приводит к другому вопросу: лучшая практика для обработки состояния приложения (которое включает в себя состояние пользователя). Так что, на самом деле, это отличный вопрос, и есть лучшая практика (непродуманный ответ). Ниже основан на стандартном JavaScript. Я не знаком с фреймами vue или nuxt.
Что касается хранения данных профиля пользователя, рекомендуется создать коллекцию users
в вашем хранилище данных, практически в Firestore (версия RTDB следующего поколения). Используйте firebase.auth().currentUser.uid
в качестве идентификатора / имени документа для каждой записи пользователя (или document в жаргоне Firestore). Объект firebase.auth().currentUser
заполняется с помощью наблюдателя .onAuthStateChanged
. Таким образом, вы можете сказать firebase.firestore().collection('users').doc(firebase.auth().currentUser.uid).update({age:25})
, чтобы сохранить возраст пользователей, например.
Не сделано, хотя.
Вам не нужно запрашивать хранилище данных каждый раз, когда вам нужно прочитать данные профиля пользователя. Итак, что вы делаете, это присоединяете слушателя в реальном времени (.onSnapshot
) к документу пользователя при входе. Иметь переменную уровня приложения / глобальную с именем userDocument
и делать userDocument = userDoc
. userDoc
- объект, возвращаемый вам вашим обновлением в реальном времени.
Теперь все, что вам нужно сделать, это прочитать локальную переменную userDocument
(мгновенно, без задержки выборки). Этот подход лучше всего подходит для других данных, таких как корзины покупок (документы).
Таким образом, ответ состоит из 2 частей: данные профиля пользователя, такие как возраст, любимый цвет, идентификатор корзины и т. Д., Хранятся в коллекции users
под идентификатором пользователя, предоставленным firebase.auth()
. Затем, наконец, подпишитесь на этот пользовательский документ, чтобы при любых изменениях в нем ваше приложение (скрипт) немедленно обновлялось со всеми этими данными (вместо выборки по требованию).