嗨,我在这里与Firebase用户UID和Firestore文档ID(userId ???)...有点困惑,并在寻求帮助:-)
通过创建用户,我得到一个UID并将其写入数据库
let db = Firestore.firestore()
db.collection("user").addDocument(data: [
"name": "confused",
"uid": result!.uid ])
通过这样做,我得到了一个唯一的文档ID(标记为绿色),我也认为它是userId:
我想要实现的是用户只能读写他的文档(绿色),而不能读写其他文档(红色)
因此我使用了以下规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Make sure the uid of the requesting user matches name of the user
// document. The wildcard expression {userId} makes the userId variable
// available in rules.
match /user/{userId} {
allow read, update, delete: if request.auth.uid == userId;
allow create: if request.auth.uid != null;
}
}
}
因此,UID和文档ID(userId ???)应该建立连接吗?但是我真的不明白吗?在我的应用中,我想检索用户的文档ID,以便稍后在http-trigger上使用它,但是我只能获取UID
print(Auth.auth().currentUser!.uid)
任何想法还是我完全理解错误?
答案 0 :(得分:4)
使用用户的UID作为自己文档的ID是正常的。现在,您正在使用addDocument
,它告诉Firestore为文档分配一个随机ID。这样,安全规则将无法正常工作(因为Firebase Auth分配的ID永远不会与Firestore分配的文档ID匹配。您应该使用setDocument
并将Firebase Auth中的UID指定为要写入的文档ID。