【发布时间】:2021-07-22 23:14:13
【问题描述】:
我的 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
【问题讨论】:
-
添加您的管理员收藏的屏幕截图...也只是一个建议,Firebase 自定义声明非常适合添加此类角色。
-
@Dharmaraj 虽然自定义声明是存储用户角色的有效选项,但将信息存储在数据库中同样有效。事实上,后者是我们在此处记录的一种方法:firebase.google.com/docs/firestore/solutions/role-based-access
-
@FrankvanPuffelen 谢谢。如果他不知道 Admin SDK 并等待数据库结构,我只是提到了它。
-
@Dharmaraj 我添加了
admins collection的图像 -
@Clid3 只是为了确认,您可以登录
adminRef吗?看看它是否不为空
标签: flutter google-cloud-firestore firebase-security flutter-getx