Cloud Firestore可保存其他用户数据

时间:2018-03-07 09:40:12

标签: javascript firebase vue.js google-cloud-firestore

如何在Cloud Firestore数据库中保存其他用户数据?我的意思是,哪一个是正确的方法?我想创建一个用户集合,我可以在其中存储用户名和其他数据。我已经找到了有关此问题的答案,但他们都在使用“旧的”Firebase实时数据库解决方案。

现在我正在这样做(这是一个Vue组件):

methods: {
    doSignUp () {
      if (!this.email || !this.password) {
        return
      }
      firebase.auth().createUserWithEmailAndPassword(this.email, this.password)
        .then(data => {
          this.createUser(data)
        }).catch(err => console.log(err))
    },
    createUser (userObject) {
      const docRef = this.$store.getters.getDB.collection('users')
      const username = userObject.email.split('@')[0]
      docRef
        .doc(username)
        .set({
          id: userObject.uid,
          username
        }).then().catch((err) => console.log(err))
    }
  }

在上面的示例中,我只是在“users”集合中创建一个新文档,并将用户的ID保存为“id”。这是正确的方法吗?我不确定。

2 个答案:

答案 0 :(得分:3)

我认为你的例子没什么不好的。当然,只要您在firestore数据库:)

上设置适当的安全规则

另一件事是IMO在使用实时数据库和Firestore数据库方面没有区别。不同之处在于体系结构以及它如何在“幕后”工作,但整体用法 - 这非常相似(API与AFAIK略有不同)。

我可以向您推荐的另一种解决方案是使用Firebase函数和Firestore触发器在Web应用程序外部编写数据库 - https://firebase.google.com/docs/auth/extend-with-functions此解决方案将删除createUser函数的必要性客户端。

答案 1 :(得分:1)

是的,这是正确的方法,您将在该集合中有一个名为Users的集合,将会有一个doc(username)的文档,其值为id: userid

您也可以将userid保存为对象,在该对象中,您将拥有与该useruid

相关的值

就像这个例子:

var frankDocRef = db.collection("users").doc("frank");
frankDocRef.set({
    name: "Frank",
    favorites: { food: "Pizza", color: "Blue", subject: "recess" },
   age: 12
 });

https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects