如何在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".这是正确的方法吗?我不确定.

推荐答案

我觉得你的例子没什么不好的.当然,只要您在firestore数据库上设置了适当的安全规则:)

另一件事是,在我看来,使用实时数据库和Firestore数据库没有区别.不同之处在于"幕后"的体系 struct 和工作方式,但总体使用情况非常相似(API与AFAIK略有不同).

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

Vue.js相关问答推荐

无法从CDN使用Vue和PrimeVue呈现DataTable

Vutify-v-工具提示-不使用键盘轻击按钮显示

Vue 2 如何在全局函数中返回观察者

VSelect - Select 不适用于 Vuetify 3 中的自定义项目插槽

Vue Datepicker 不会在渲染时显示默认日期

:deep() 带有嵌套 scss 规则的语法

拖入 vue2-google-map 后如何获取标记位置?

在Vue cli项目中,Laravel api app放在哪里以及如何在vue js中调用api?

我可以从手表调用方法并安装吗?

Vue 单元测试:您正在开发模式下运行 Vue?

为什么 Vue 路由/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

Vuetify 容器不会填充高度

在 vuejs 中将旧代码修改为 vue router 4

如何使用 vuex 删除项目?

Modal 内部的 Vue.js AJAX 调用

如何禁用 nuxt 默认错误重定向

将 VueJS 数据属性重置为初始值

在Vue中单击路由链接上的激活方法

Vuetify 过渡:如何设置过渡速度

IOS在输入焦点上显示键盘