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

firestore: how to check if a document exist

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

这行得通。 data() 方法将 return null 如果没有文档存在, return {} 当存在空白/空文档时。

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 查询来检查它。