Firebase SnapShot.val () возвращает ноль при попытке доступа к данным в vuex - PullRequest
1 голос
/ 30 января 2020

Я создаю приложение, к которому могут получить доступ студенты, сотрудники и не преподавательский состав.

мои данные формы выглядят так:

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 Ответ

2 голосов
/ 30 января 2020

Кажется, что, вызывая firebaseDb.ref(`users/'${userId}`).set({...}), вы создаете своего пользователя под узлом

users/'userId

с одинарной кавычкой (').

И вы пытаетесь прочитать узел

users/userId

, который не существует, если предположение, что вы ошибочно добавили одинарную кавычку, верно.


Кроме того, обратите внимание, что вам не нужно делать

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

, поскольку createUserWithEmailAndPassword() возвращает UserCredential. Таким образом, вы можете сделать:

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

, а также, что вы можете сделать:

handleAuthStateChange() {
    firebaseAuth.onAuthStateChanged(user => {
      if (user) {
        const studentId = user.uid;
        //......
...