如何在onAuthStateChanged中输入异步回调函数?
此行中出现错误“在应返回void的函数参数中返回了Promise。”。
async (user: User | null) => {
const unpdatedUser = user ? await adminUser(user) : null;
callback(unpdatedUser);
};
下面是完整的代码。
type DispatchType = Dispatch<SetStateAction<User | null>>;
export function onUserStateChange(callback: DispatchType) {
onAuthStateChanged(auth, async (user: User | null) => {
const unpdatedUser = user ? await adminUser(user) : null;
callback(unpdatedUser);
});
}
async function adminUser(user: User | null) {
return get(ref(database, 'admins')).then((snapshot) => {
if (snapshot.exists()) {
const admins = snapshot.val();
const isAdmin = admins.include(user?.uid);
return { ...user, isAdmin };
}
return user;
});
}
1条答案
按热度按时间kknvjkwl1#
您在Firebase Auth
User
类型和您自己的User
类型(包括一个isAdmin
布尔值)之间存在一些类型混淆。我会选这样的...
在尝试将
null
user
参数扩展到{ ...user, isAdmin }
之前,还应检查该参数。adminUser
函数应返回类型Promise<User | null>