尝试访问vuex

时间:2020-01-30 12:48:56

标签: javascript firebase vue.js firebase-realtime-database vuex

我正在创建一个应用程序,学生,教职员工和非教学人员都可以访问。

我的表单数据如下:

formData: {
      name: "",
      email: "",
      password: "",
      select: null
    },
    options: ["Student", "Staff", "Non-Teaching Staff"],

我当然可以在Vuex商店中向以下用户注册:

registerUsers({}, payload) {
    firebaseAuth.createUserWithEmailAndPassword(payload.email, payload.password)
      .then(res => {
        const userId = firebaseAuth.currentUser.uid;
        console.log(res)
        Notify.create({
          message: 'Regsitration Successful!.',
          color: 'primary',
          classes: 'quick'
        })
        //set student
        firebaseDb.ref(`users/'${userId}`).set({
          name: payload.name,
          email: payload.email,
          select: payload.select
        });
      })
      .catch(err => {
        console.log(err)
        Notify.create({
          message: `${err.message}`,
          classes: 'quick',
          color: 'negative'
        })
      })

我还可以使用以下方式登录用户:

loginUsers({}, payload) {
    firebaseAuth.signInWithEmailAndPassword(payload.email, payload.password)
      .then(res => {
        console.log(res);
        Notify.create({
          message: 'Success!',
          classes: 'quick',
          color: 'positive'
        })
      })
      .catch(err => {
        console.log();
        Notify.create({
          message: `${err.message}`,
          classes: 'quick',
          color: 'negative'
        })
      })
  },

探针来自于此:

handleAuthStateChange() {
    firebaseAuth.onAuthStateChanged(user => {
      if (user) {
        //set Student
        const studentId = firebaseAuth.currentUser.uid;
        console.log(studentId)
        firebaseDb.ref(`users/${studentId}`).once('value', snapshot => {
          console.log(snapshot.val())
        })
      }
    })
  },

Snapshot.val()在控制台中返回null。

我写错了什么。

1 个答案:

答案 0 :(得分:2)

似乎,通过调用window.location,您正在节点下创建用户

firebaseDb.ref(`users/'${userId}`).set({...})

用单引号(users/'userId )。

然后您尝试读取该节点

'

如果您错误地添加了单引号的假设是正确的,则不存在。


另外请注意,您不需要这样做

users/userId

因为firebaseAuth.createUserWithEmailAndPassword(payload.email, payload.password) .then(res => { const userId = firebaseAuth.currentUser.uid; //... 返回了UserCredential。因此,您可以这样做:

createUserWithEmailAndPassword()

,并且您可以执行以下操作:

firebaseAuth.createUserWithEmailAndPassword(payload.email, payload.password)
  .then(res => {
    const userId = res.user.uid;
    //...