我的 Firestore 中有一个集合 admins
,我在其中添加了具有管理员角色的用户的文档 ID。
在授予用户管理员角色的其他方面,我需要检查是否在管理员集合下找到了他们的用户 ID (documentID)。
这是我的代码:
isAdmin() async {
await getUser.then((user) async {
final adminRef = await _db.collection("admins").doc(user?.uid).get();
if (adminRef.exists) {
admin.value = true;
} else {
admin.value = false;
}
update();
}); }
它不断返回false
,其中当前用户的文档存在于admins
下。
当我用 users
替换查询中的集合时,它工作正常。
我不知道我哪里出错了。请问有什么线索吗?
这里是admins collection image
image of admins collection
这里是users collection image
image of users collection
答案 0 :(得分:0)
这会起作用。 data()
方法将在没有文档存在时返回 null
,在空白/空文档存在时返回 {}
。
isAdmin() async {
await getUser.then((user) async {
final adminRef = await _db.collection("admins").doc(user).get();
if (adminRef.data() == {}) {
admin.value = true;
} else {
admin.value = false;
}
update();
}); }
我不明白您为什么要在集合中创建空文档。相反,您可以将 admin 的 userId 存储在每个文档中,并将 userId 分配为 documentId。您可以使用 where 查询进行检查。