【发布时间】:2021-01-18 23:01:17
【问题描述】:
我有一个如下所示的 Firestore 集合。我需要获取最后存储的message。
Firestore-root
|
--- chat_rooms(collection)
|
--- chats(collection, the id for that collection is sender_reciever)
|
--- time_send: (millisecondsSinceEpoch)
|
--- sender:(string)
|
--- message:(string)
这是我的db 获取最后一个消息的方法
getLastMessage(String chatRoomId) {
return Firestore.instance.
collection('chat_rooms').document(chatRoomId)
.collection('chat').orderBy('time_send',descending: false)
.limit(1).get();
}
我在这里称呼它。 Chats 是一个返回 sender 和 last_message 的小部件。基本上我想做的是,例如,在使用whatsapp时,最后一条消息会弹出主页。我正在尝试做完全相同的事情。这样,我也可以获得username。下面的方法不返回实际的用户数据。因为集合chat_rooms_id 的id 是username_sender 和username_reciever 的组合。我只是删除了当前用户的reciever。并且,sender 仍然存在。
return Chats(
username: snapshot.data.documents[index]
.data["chat_room_id"] // return chat_room id
.toString()
.replaceAll("_", "")
.replaceAll(Constants.signedUserName, ""),
chatRoomId:
snapshot.data.documents[index].data["chat_room_id"],
last_message: __db
.getLastMessage(snapshot
.data.documents[index].data[snapshot.data.documents[index]
.data['chat_room_id'].toString()]
.toString()).toString()
);
【问题讨论】:
-
嘿,你能不能也包括
Chats()的定义以及运行return chats()的方法是如何定义的?根据消息Instance of future,似乎缺少一些async/await或then关键字。以上是 [1] 中描述的预期行为。 [1]dart.dev/codelabs/…
标签: flutter dart google-cloud-firestore