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