【问题标题】:How to access nested data in firestore and save it in an array如何访问firestore中的嵌套数据并将其保存在数组中
【发布时间】:2021-07-23 01:52:50
【问题描述】:

我在 Firestore 中的数据是这样排列的:

我想要归档的基本上是从每个文档中获取所有“值”,我现在在第二张图片中显示的一个集合中拥有其中的 3 个。我只想下载一次。 结构如下:

聊天室 --> ChatId(1) --> ChatId(2) --> 聊天消息

或者更容易理解:

集合 --> 文档 --> 集合 --> 文档

我想遍历“ChatId(2)”中的所有聊天消息,并从每个“聊天消息”中获取所有“值”并将它们存储在一个数组中。

我在尝试处理如此困难的(至少对我而言)对 firebase 的嵌套调用时遇到了困难,我想在这里寻求帮助。我在 react-native 工作,所以 Javascript 是我在这里使用的语言。

【问题讨论】:

    标签: javascript reactjs react-native google-cloud-firestore


    【解决方案1】:

    我自己搞定了,我的代码看起来像这样,如果你想复制它:

    const loadallmessages = async () => {
            await firebase.firestore().collection("chatrooms").doc(`${chatId}`).collection(`${chatId}`).orderBy("timestamp").limit(20).get().then(
                querySnapshot => {
                    allChatMessages = [];
                    querySnapshot.docs.map(doc => {
                        allChatMessages.push(doc.data().value);
                        //console.log("console log inside foreach: ", doc.data().value)
                    })
                    console.log(allChatMessages)
                })
    
        };
    

    “限制 20”限制了我的查询快照,所以我只收到 20 条消息,因为我按“时间戳”排序,所以我只收到 20 条最新条目。 作为旁注,时间戳条目是我在我的应用程序本身中使用基本 JS 方法执行的操作,以便稍后(谁知道)创建一个要在聊天中显示的时间戳。每次您发送消息时,它都会附加到消息上并与聊天消息本身一起存储。它是这样的:

    const timestamp = Date.now()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2013-06-11
      • 2017-06-19
      • 1970-01-01
      相关资源
      最近更新 更多