我目前正在将实时数据库迁移到Firestore,并遇到了一些问题。我的规则设置如下:
service cloud.firestore {
match /databases/{database}/documents {
match /users/ {
allow read
match /{$user} {
allow create: if isAuthenticated(request) && exists(/databases/$(database)/documents/users/$(request.auth.uid)) === false
allow update: if isAuthenticated(request) && request.auth.id === resource.data;
match /notifications/{$notification} {
allow write: if request.auth.id === resource.data
}
}
}
}
}
function isAuthenticated(req) {
return request.auth.uid != null;
}
我想仅在$user
与身份验证 ID (request.auth.id
相同时为用户保护更新。通知也是如此。是否可以访问通知规则中的$user
?
规则是作用域的,因此您可以从嵌套作用域中的更高级别访问变量。
在您的情况下,allow write
规则可以访问$user
和 $notification
。