【发布时间】:2021-03-29 15:42:06
【问题描述】:
我对 google 的存储有一点问题。我的 Firestore 中的数据按以下方式排序:
-chatrooms(collection)
-chatroom1(document)
-chatroom1(collection)
-message1(document)
-message2(document)
-message3(document)
-chatroom2
-...
每条消息都只是一个文档,格式如下:
counter: integer
partner1: string
partner2: string
sender: string
value: string
我的目标是从每个聊天室获取最后一条聊天消息并将它们存储在一个数组中。我为此尝试以下命令:
lastmessage = await firebase.firestore().collection("chatrooms").doc(`${chatkeys[i]}`).collection(`${chatkeys[i]}`).orderBy("counter").limit(1).get().then(
querySnapshot => {
querySnapshot.docs.forEach(doc => {
console.log(doc)
})
}
)
你看,我尝试使用 orderBy 并从所有消息中获取最新的消息,我也将它限制为 1,所以我只得到一个结果,准确地说是最新的。之后,我使用 querySnapshot 并想退出文档,我得到了“值”键(查看上面我的消息文件的格式,它们都有一个“值”键,即聊天消息)但现在我开始去奋斗。
因此,我得到了以下非常长的代码,我不知道发生了什么,我将向您展示其中的一部分:
"cP": e {
"Qe": Map {
"counter" => e {
"Ne": 2,
"Zt": 1,
},
},
"ce": false,
"converter": [Function anonymous],
"hasCommittedMutations": false,
"key": t {
"path": e {
"len": 4,
"offset": 5,
"segments": Array [
"projects",
...(truncated to the first 10000 characters)
谁能解释发生了什么,甚至更好,告诉我如何才能实现我的目标? 我只想从最新文档中获取“值”字符串。我不明白如何使用 orderBy 从过滤后的文档中获取数据。
【问题讨论】:
-
您如何访问
value密钥?您应该使用doc.data().value,但看起来您只是在记录doc。除此之外,您的查询似乎很好。 -
@Aside 成功了!如果你想在这里写下这个作为你的答案,那么我可以给你绿色的复选标记。理解这个查询有很大困难,谢谢你的简单回答。
-
@Aside,您的评论对 OP 非常有帮助。请将其发布为答案。
-
@Aside 我现在还有一个问题,也许你也可以帮我解决这个问题。 console.log() 给了我正在寻找的结果。另一方面,“return”给了我一个不确定的回报。我也尝试过研究,但适用于其他人的解决方案不适合我,你可能知道如何解决这个问题?
标签: javascript reactjs react-native google-cloud-firestore