Gib*_*hah 4 string firebase google-cloud-firestore
我在 Firebase 数据库中工作。我需要限制字符串字段的长度。我怎么做?
字段的路径是:
COL1 / DOC1 / / /描述
也就是说,从集合 col1 开始,然后到 doc1,然后对于 doc1 下的所有集合,以及该集合下的所有文档,描述字段需要限制为 100 个字符。
有人可以向我解释如何做到这一点吗?谢谢
我试图从另一个答案中获得验证,但没有成功。Firestore 只是不喜欢检查资源数据值的 .length 。
我四处搜索,这篇文章帮助了我:https : //fireship.io/snippets/firestore-rules-recipes/
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId} {
allow read: if true;
allow write: if request.auth != null
&& request.auth.uid == request.resource.data.uid
&& request.resource.data.body.size() > 0
&& request.resource.data.body.size() < 255
&& request.resource.data.title.size() > 0
&& request.resource.data.title.size() < 255;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于 Cloud Firestore,您可以使用以下方法验证该description字段是否超过 100 个字符:
service cloud.firestore {
match /databases/{database}/documents {
match /col1/doc1 {
allow write: if resource.data.description.size() <= 100;
match /subcollection1/{doc=**} {
allow write: if resource.data.description.size() <= 100;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于col1/doc中的所有文档subcollection1。请注意,这些规则不会限制描述的长度,因为安全规则无法修改写入的数据。相反,规则会拒绝描述长度超过 100 个字符的写入。
(据我所知)没有办法将规则应用于仅一个文档的每个子集合。我知道的最接近的是将其应用于所有文档及其子集合:
match /col1/(document=**} {
allow write: if resource.data.description.size() <= 100;
}
Run Code Online (Sandbox Code Playgroud)
这会将验证应用于col1该下的所有子集合中的所有文档。