Firebase Firestore 如何在没有额外请求的情况下获取参考数据?

And*_*tik 6 javascript firebase react-native google-cloud-firestore

当我获取了我们可以在下面的屏幕截图中看到的地方时,我需要获取他们的数据,但它是对数据的引用,我可以在没有额外请求的情况下获取数据,例如place.ref.data()?如果我有 30 个位置,我应该提出 30 个请求,真的吗?我使用 react native 并且 ref 对象的类型为 DocumentReference https://rnfirebase.io/docs/v3.1.x/firestore/reference/DocumentReference

http://prntscr.com/hqf33h

Fre*_*sar 0

您需要创建自己的填充方法。

这是我制作的一个示例,其中我的集合eventSchedule引用了events,然后我有事件数组,并且我想从每个 eventSchedule 获取事件...这就是我所做的:


   
    ...
    const docRef = db.collection("eventSchedule").doc(dayName);

    try {
        const doc = await docRef.get();

        if (doc && doc.exists) {
            const eventSchedule = doc.data();

            if (eventSchedule.activeEvents) {
                const activeEventsRefs = eventSchedule.activeEvents;
                eventSchedule.activeEvents = [];

                await activeEventsRefs.reduce(
                    async (promise: any, event: any) => {
                        await promise;
                        const childDoc = await event.get();

                        if (childDoc) {
                           eventSchedule.activeEvents.push(childDoc.data());
                        }
                    },
                    Promise.resolve()
                );
            }
        } else {
            logMessage += `No docs found for eventSchedule for today - ${dayName}`;
        }
    } catch (error) {
        logMessage += `Error getting document ${JSON.stringify(error)}`;
    }

Run Code Online (Sandbox Code Playgroud)

所以我使用减速器来处理承诺。它的工作方式就像一个魅力,这是执行此操作的最简单的“手动”方式。

另外,如果你使用 React + Redux + Firebase,你可以检查库react-redux-firebase,它已经实现了很多东西populate,包括类似于 MongoDB 填充和 SQL Join: http://react-redux- firebase.com/docs/populate.html