Firebase设置方法未将数据添加到现有集合

时间:2019-12-01 09:45:33

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

我正在使用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,但是有些信息不能更新数据库中的名称字段。

1 个答案:

答案 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编写文档。