嵌套 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()
。
我正在为 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()
。