firestore:如何检查文档是否存在

时间:2021-04-29 14:55:34

标签: flutter google-cloud-firestore firebase-security flutter-getx

我的 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

1 个答案:

答案 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 查询进行检查。