我的应用有一个集合(用户)和子集合“user”集合具有包括字段“Status”的常规用户信息。但是状态是动态的。它可以是“未验证”、“待验证”、或“verified”。“Document”子集合包含来自用户的所有信息,以及用户发送其文档以进行验证的附加字段“document”。当前管理员直接访问“文档”字段列表。但是,我希望他在且仅在“用户”集合中的"状态“字段为”待验证“时访问它。我不知道如何做到这一点。有帮助吗?
这就是管理面板如何访问屏幕上的主集合“用户”用户。
QueryDocumentSnapshot<Map<String, dynamic>>? selectedUser;
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream:
FirebaseFirestore.instance.collection('users').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
onTap: () {
setState(() {
selectedUser = snapshot.data!.docs[index];
});
},
title: Text(
snapshot.data!.docs[index].get('Status'),
),
),
);
},
);
}
if (snapshot.hasError) {
return const Text('Error');
} else {
return const Center(child: Text('Do requests yet'));
}
},
),
这就是管理面板如何访问不同屏幕上的子集合“文档”:但我只想在“user”集合中的“status”字段为“pending verification”时访问它。
QueryDocumentSnapshot<Map<String, dynamic>>? pendingVerifications;
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream: FirebaseFirestore.instance
.collectionGroup('Documants')
.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(ElevatedButton( onPressed: () {}, child: const
Text('Approve')),
)
1条答案
按热度按时间rjzwgtxy1#
Firestore查询只能根据它返回的文档中的数据进行排序和过滤。
虽然可以使用集合组查询来查询所有名为
Documents
的集合,但Firestore无法根据用户文档中的值过滤这些文档。您的选项包括:
这两种方法都有优点,所以你必须自己决定什么方法最适合你的应用程序。