嵌套的Javascript异步/await未被触发 - 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()

最新更新