代码之家  ›  专栏  ›  技术社区  ›  drake035

firestore:有没有一种简单的方法来附加额外的数据给用户?

  •  0
  • drake035  · 技术社区  · 6 年前

    我使用推荐的方法创建用户 Firestore 在我的项目中,通过 createUserWithEmailAndPassword() 功能:

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

    不过,我想为每个用户附加额外的数据,即一个包含他/她所处理的所有项目的对象。

    火店 允许这样的事情发生(如果是,怎么办?),或者我必须通过创建自己的 userData 集合,例如 userId 加上额外的 projects 字段?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Alex Stuckey    6 年前

    我过去采用的方法是将一个文档与一个专用的“users”集合配对,这个集合的id是firebase用户uid。

    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安全规则来确保用户文档在更新时处于正确的状态,因为这是客户端代码。