【发布时间】:2022-07-13 22:00:24
【问题描述】:
目前我想从一个集合中获取所有文档,其中当前用户的用户 ID 作为该集合的名称,用于从 firestore 做出反应。
我目前面临的问题是 react 会引发错误,因为它会在获取用户 ID 之前尝试获取集合,因此它正在为集合搜索空路径。
这是我目前用于获取集合中文档的代码:
import { useAuth, db } from '../Firebase'
...
const currentUser = useAuth();
useEffect(
() =>
onSnapshot(collection(db, 'Patienten/' + currentUser.uid + '/Patienten'), (snapshot) =>
setPatienten(
snapshot.docs.map((doc) => ({ ...doc.data(), id: doc.id })),
),
),
[],
)
Firebase.js 中的相关代码:
export function useAuth() {
const [currentUser, setCurrentUser] = useState()
useEffect(() => {
const unsub = onAuthStateChanged(auth, (user) => setCurrentUser(user))
return unsub
}, [])
return currentUser
}
因此,此代码所做的是返回集合“Patienten//Patienten”中不存在的文档并引发错误。 这个问题有解决办法吗?
【问题讨论】:
-
您应该在尝试使用之前检查 currentUser 是否有 Firebase 用户对象。它不会在页面加载时立即可用 - 准备就绪时将调用 auth 状态观察者回调。
标签: reactjs firebase google-cloud-firestore firebase-authentication