我正在使用VUEX和Firebase创建具有三个字段NAME,EMAIL,PASSWORD的注册表。首先,我正在使用createUserWithEmailAndPassword方法添加用户,但我也想将名称字段数据添加到“现有空白”集合中,这里我使用set方法。但这不是在集合中添加名称字段数据。
methods: {
onSignUp() {
firebase
.auth()
.createUserWithEmailAndPassword(this.email, this.password)
.then(user => {
console.log(user);
console.log(user.user.uid);
firebase.database.collection("profiles").doc(user.user.id).set({
name: this.name
})
.then(function() {
console.log("Document successfully written!");
})
.catch(function(error) {
console.error("Error writing document: ", error);
});
this.$store.dispatch('signUserUp', user);
})
.catch(error => {
this.$store.dispatch('signUserError', error)
});
}
}
data(){
return {
name: "",
email: "",
password: "",
}
}
提交表单后,它添加了一个新用户,我还可以在控制台中看到uid,但是有些信息不能更新数据库中的名称字段。
答案 0 :(得分:3)
您应使用firebase.firestore()
而不是firebase.database
(请参阅此doc),并因此按以下方式修改代码:
onSignUp() {
firebase
.auth()
.createUserWithEmailAndPassword(this.email, this.password)
.then(user => {
console.log(user);
console.log(user.user.uid);
return firebase.firestore().collection("profiles").doc(user.user.id).set({
name: this.name
});
})
.then(() => {
console.log("Document successfully written!");
this.$store.dispatch('signUserUp', user);
})
.catch(error => {
this.$store.dispatch('signUserError', error)
});
}
}
您还应该检查profiles
集合的安全规则是否正确设置。通常,(经过身份验证的)用户只能以自己的userid
作为文档ID编写文档。