programing

Firebase SnapShot.val()이 vuex의 데이터에 액세스하려고 할 때 null을 반환함

prostudy 2022. 8. 30. 21:35
반응형

Firebase SnapShot.val()이 vuex의 데이터에 액세스하려고 할 때 null을 반환함

학생, 교직원, 교직원이 아닌 직원이 접근할 수 있는 어플리케이션을 만들고 있습니다.

내 폼 데이터는 다음과 같습니다.

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'
        })
      })
  },

Probems는 다음과 같이 구성됩니다.

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을 반환합니다.

내가 뭘 잘못 쓰고 있는지 제발.

전화를 걸어보니firebaseDb.ref(`users/'${userId}`).set({...})노드 아래에 사용자를 만듭니다.

users/'userId

(따옴표 1개 포함)').

그리고 당신은 그 노드를 읽으려고 한다.

users/userId

단일 인용문을 잘못 추가했다는 가정이 맞다면 존재하지 않습니다.


또, 할 필요가 없는 것에 주의해 주세요.

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

왜냐면createUserWithEmailAndPassword()를 반환합니다.이러한 작업을 수행할 수 있습니다.

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

또한 다음과 같은 작업을 수행할 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/59986433/firebase-snapshot-val-returns-null-when-trying-to-access-data-in-vuex

반응형