嵌套 Javascript async/await 未被解雇 - Nuxt 和 Firebase Auth

Nested Javascript async/await not being fired - Nuxt & Firebase Auth

我正在为 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... 没有触发,当然这是因为我什至没有调用它,但我已经尝试了几个小时想出一个干净的解决方案,但似乎什么都没有到目前为止工作。

您需要声明回调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()