Firestore: есть ли простой способ прикрепить дополнительные данные для пользователей? - PullRequest
0 голосов
/ 02 января 2019

Я использую рекомендованный способ создания пользователя с Firestore в моем проекте через функцию createUserWithEmailAndPassword():

firebase.auth().createUserWithEmailAndPassword(this.email, this.password).then(
  (user) => {
    this.$store.commit('setUserId', user.user.uid);
  },
  (error) => {
    alert('Oops. ' + error.message)
  }
);

Однако я хотел бы прикрепить дополнительные данные каждому пользователю, а именнообъект, содержащий все проекты, над которыми он работал.

Разрешает ли Firestore что-то подобное (если да, то как?), или мне нужно обрабатывать это вручную, создавая собственную коллекцию userDataнапример, с полем userId вместе с дополнительным полем projects?

1 Ответ

0 голосов
/ 02 января 2019

Подход, который я использовал в прошлом, состоял в том, чтобы связать документ в выделенной коллекции 'пользователей' с идентификатором UID пользователя Firebase.

db.collection('users').doc(firebase.auth().currentUser.uid).set(...)

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

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    const userRecordRef = db.collection('users').doc(user.uid)
    userRecordRef.get()
    .then(doc => {
      if (doc.exists) {
        if (doc.data().onboardingStatus === 'new_user') {
          root.$router.push('/onboarding')
        }
        ...
    })
    .catch(...)
    ...
  }
  ...
}

Правила безопасности Firestore должны использоваться для обеспечения того, чтобы пользовательские документы находились в правильном состоянии при каждом обновлении, поскольку это код на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...