我有一个 Flutter 聊天应用程序。
FireStore的结构为:
chats
(集合)> roomId
(随机生成的id,这是一个文档)> users
(集合)> email
(用户的电子邮件,这是一个文档)> messages
(集合)> messageId
(随机生成的id,这是一个文档)>实际的聊天。
当我使用以下代码时它可以工作。这给出了特定用户在房间中的所有消息。
FirebaseFirestore.instance
.collection('chats')
.doc(roomId)
.collection('users')
.doc(user)
.collection('messages')
.orderBy('timestamp', descending: true)
.snapshots(),
但是,我需要获取房间中所有用户的列表。这是我尝试过的代码,没有得到任何结果,空列表。
QuerySnapshot<Map<String, dynamic>> userCollection = await FirebaseFirestore.instance
.collection('chats')
.doc(roomId)
.collection('users')
.get();
这是商店设定的规则。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
我需要获取房间中所有用户的列表。 如有任何帮助,我们将不胜感激。
如果您得到空结果,则说明您的安全规则允许该操作 - 因此这些不是空列表的原因。
更有可能的是,您在/chats/$roomId/user
集合中实际上没有任何文档。请记住:
有关此内容的更多信息,另请参阅: