在我的 React 应用程序中,我想在更新我的 UI 之前检查后台 firebase 函数是否已在 Firestore 中创建了文档。因此,我使用 RxFire 中的 docData 函数来订阅特定的“即将从背景函数创建”文档中的更改:
const davidDocRef = db.doc('users/david');
// meantime, a firebase function creates "users/david" doc in the background
// I am observing for changes to the firestore doc in my React Component:
useEffect(() => {
docData(davidDocRef,'uid').subscribe(userData => setUserId(userData.uid));
...
// I then check that orgId is not null by assuming that I will get back a doc.id after it has been created it in Firestore
问题是 userData.uid 总是返回“david”,不管在 Firestore 中创建的文档是什么。我究竟做错了什么?它似乎是从我在参考中设置的路径返回 uid,而不是在 firestore 中已经(或应该已经)创建的实际文档路径。当我将引用更改为查找“users/foo”时,userData.uid 仍然返回“foo”而不是 undefined 或通过错误返回。
在这种情况下,我可以改为查找 userData.name。这实际上是有效的,因为如果文档没有存储在 Firestore 中,我会得到“未定义”,如果有的话,我会得到“未定义”,但我希望上面的示例能够以类似的方式工作。