【问题标题】:Nested Javascript async/await not being fired - Nuxt & Firebase Auth嵌套的 Javascript async/await 未被触发 - Nuxt & Firebase Auth
【发布时间】:2021-12-22 21:13:06
【问题描述】:

我正在为 NuxtJS 3 编写一个基本的中间件,用于使用 Firebase 进行身份验证,并且只需要一些有关正确链接和嵌套语法的帮助。这是我的代码:

import { onAuthStateChanged } from 'firebase/auth';
import { getDoc, doc } from 'firebase/firestore';
import { auth, db } from '~/plugins/firebase';

export default async function ({ redirect }) {
  await onAuthStateChanged(auth, (user) => {
    if (user) {
      const documentRef = doc(db, 'users', user.uid);

      const getDocData = async () => {
        const docSnap = await getDoc(documentRef);

        if (docSnap.exists()) {
          console.log('Document data:', doc.data());
        }
      };
    }
  });
}

大部分都有效,但const getDocData... 没有触发,当然这是因为我什至没有调用它,但我已经尝试了几个小时来提出一个干净的解决方案,但到目前为止似乎没有任何效果.

【问题讨论】:

    标签: javascript firebase async-await firebase-authentication nuxt.js


    【解决方案1】:

    需要声明回调async,如下:

    onAuthStateChanged(auth, async (user) => {
      if (user) {
        const documentRef = doc(db, 'users', user.uid);
        const docSnap = await getDoc(documentRef);
    
        if (docSnap.exists()) {
          console.log('Document data:', docSnap.data());
        }
      }
    });
    

    另请注意,您需要将doc.data() 更改为docSnap.data()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2018-06-04
      • 2018-07-05
      • 2021-11-13
      • 2020-03-09
      • 2015-11-10
      相关资源
      最近更新 更多