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