我的数据库(firestore)中有以下字符集合结构
/characters/{uid}
- username: string
- clan: string
- mana: number
- health: number
etc...
Run Code Online (Sandbox Code Playgroud)
我正在尝试/characters/{uid}通过以下逻辑找出安全规则
service cloud.firestore {
match /databases/{database}/documents {
// Characters
match /characters/{characterID} {
allow create: if isValidUsername();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里的函数isValidUsername检查各种内容,如长度、特殊字符等......但我无法弄清楚的一件事是如何检查函数内部
确保它request.resource.data.username是唯一的,即不存在于任何其他/characters收藏文档中。
拥有这样的 Firestore 安全性是否成本高昂(即大约有多少次读取以及我们收取多少美元费用):
match /profiles/{document=**} {
allow create: if request.auth.uid != null
&& (request.resource.data.firstName is string && resource.data.firstName != request.resource.data.firstName)
&& (request.resource.data.lastName is string && resource.data.firstName != request.resource.data.firstName)
&& (request.resource.data.username is string && resource.data.username != request.resource.data.username)
&& (request.resource.data.email is string && resource.data.email != request.resource.data.email)
}
Run Code Online (Sandbox Code Playgroud)