Firebase Firestore如何检查集合以允许写入(规则)
我在Firestore中使用一个名为“admin”的集合来定义哪些用户可以编写新文档(下图) 目前,它仅由软件控制。我想向Firestore添加规则。我试过下面的规则,但不起作用。在这种情况下,正确的规则是什么Firebase Firestore如何检查集合以允许写入(规则),firebase,firebase-realtime-database,firebase-authentication,google-cloud-firestore,Firebase,Firebase Realtime Database,Firebase Authentication,Google Cloud Firestore,我在Firestore中使用一个名为“admin”的集合来定义哪些用户可以编写新文档(下图) 目前,它仅由软件控制。我想向Firestore添加规则。我试过下面的规则,但不起作用。在这种情况下,正确的规则是什么 service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read: if request.auth != null;
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if request.auth != null;
allow write: if get(/admin/{anyDocument}).data.userId == request.auth.uid;
}
}
}
我建议使用
users
集合,集合中有一个admin
字段,该字段可以设置为true
/false
。然后,您可以执行以下操作:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if request.auth != null;
allow write: if get(/users/${request.auth.uid}).data.admin == true;
}
}
}
我建议使用一个
users
集合,其中包含一个admin
字段,该字段可以设置为true
/false
。然后,您可以执行以下操作:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if request.auth != null;
allow write: if get(/users/${request.auth.uid}).data.admin == true;
}
}
}
据我所知,这是不可能与您当前的数据库结构。因为在firestore规则中无法访问按键,除非在
admin
节点中使用
一种方法是将admin
及其uid
保存为键,如admin/userID/data…
现在你可以访问它了
allow write: if get(/databases/$(database)/documents/admin/$(request.auth.uid)).data.userId == request.auth.uid;;
据我所知,这是不可能与您当前的数据库结构。因为在firestore规则中无法访问按键,除非在
admin
节点中使用
一种方法是将admin
及其uid
保存为键,如admin/userID/data…
现在你可以访问它了
allow write: if get(/databases/$(database)/documents/admin/$(request.auth.uid)).data.userId == request.auth.uid;;
request.auth.uid
来自何处?如果客户端通过Firebase auth进行身份验证,request.auth
将在使用Firestore SDK时自动填充。如果我想在特定集合中设置规则,该怎么办?request.auth.uid
来自何处?如果客户端通过Firebase auth进行身份验证,request.auth
将在使用Firestore SDK时自动填充。如果我想在特定集合中设置规则,该怎么做