Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuex和Firebase,存储其他用户信息_Firebase_Vue.js_Firebase Realtime Database_Vuex - Fatal编程技术网

Vuex和Firebase,存储其他用户信息

Vuex和Firebase,存储其他用户信息,firebase,vue.js,firebase-realtime-database,vuex,Firebase,Vue.js,Firebase Realtime Database,Vuex,我有一个使用Firebase和Vuex创建用户的函数,并希望存储有关该用户的其他信息 当我创建一个用户时,我运行下面的代码,其中有效负载包含电子邮件、密码和名称作为一个对象。 这是vuex中的操作 用户被创建,我的数据库存储诸如姓名和电子邮件之类的数据(我将很快向用户添加一些新的数据字段) 这是意料之中的事。我有一个自动登录功能,在刷新或关闭/打开浏览器时更新本地用户。当我获取userdata,并尝试将auth函数中的对象(仅ID和电子邮件)和我数据库中的对象合并时,就会出现问题。我的数据库当前

我有一个使用Firebase和Vuex创建用户的函数,并希望存储有关该用户的其他信息

当我创建一个用户时,我运行下面的代码,其中有效负载包含电子邮件、密码和名称作为一个对象。 这是vuex中的操作

用户被创建,我的数据库存储诸如姓名和电子邮件之类的数据(我将很快向用户添加一些新的数据字段)

这是意料之中的事。我有一个自动登录功能,在刷新或关闭/打开浏览器时更新本地用户。当我获取userdata,并尝试将auth函数中的对象(仅ID和电子邮件)和我数据库中的对象合并时,就会出现问题。我的数据库当前只保存用户的名称

-以下是我的尝试:

autoSignIn ({ commit }, payload) {
  const userDataFromAuth = { id: payload.uid, email: payload.email }
  firebase.database().ref('users/' + payload.uid).once('value')
    .then((data) => {
      const userDataFromDatabase = []
      const obj = data.val()
      for (let key in obj) {
        userDataFromDatabase.push({
          name: obj[key].name
        })
      }
      var userData = {...userDataFromAuth, ...userDataFromDatabase}
      console.log(userData)
      commit('setUser', userData)
    })
},

有什么想法吗?

这是一个很好的解决方案

autoSignIn ({ commit }, payload) {
  const userDataFromAuth = { id: payload.uid, email: payload.email }
  firebase.database().ref('users/' + payload.uid).once('value')
    .then((data) => {
      const userDataFromDatabase = { name: data.child('name').val() }
      const userData = { ...userDataFromAuth, ...userDataFromDatabase }
      commit('setUser', userData)
    })
},

首先,我们从firebase的auth函数(包含id和电子邮件)获取数据。然后我们在“users/”+payload.uid(id)下获取数据,然后合并这两个javascript对象,并将它们存储在store.users(vuex的本地数据存储)中,我们可以在整个应用程序中使用它们。请随时提出问题或改进建议。

这是一个很好的解决方案

autoSignIn ({ commit }, payload) {
  const userDataFromAuth = { id: payload.uid, email: payload.email }
  firebase.database().ref('users/' + payload.uid).once('value')
    .then((data) => {
      const userDataFromDatabase = { name: data.child('name').val() }
      const userData = { ...userDataFromAuth, ...userDataFromDatabase }
      commit('setUser', userData)
    })
},

首先,我们从firebase的auth函数(包含id和电子邮件)获取数据。然后我们在“users/”+payload.uid(id)下获取数据,然后合并这两个javascript对象,并将它们存储在store.users(vuex的本地数据存储)中,我们可以在整个应用程序中使用它们。请随时提出问题或改进建议。

RegisteredTools因为空而未保存。是的,在保存用户数据时最好使用用户id而不是随机推送id。registredTools不保存,因为它是空的。是的,在保存用户数据时,最好使用用户id而不是随机推送id。谢谢你,威廉先生。回答得很好。谢谢你,威廉先生。回答得很好。