我在Firebase数据库中工作。我需要限制字符串字段的长度。我该怎么办?
该字段的路径为:
Col1 / doc1 / / / description
也就是说,从集合col1开始,然后进入doc1,然后对于doc1下的所有集合以及该集合下的所有文档,描述字段必须限制为100个字符。
有人可以告诉我该怎么做吗?谢谢
答案 0 :(得分:0)
对于Cloud Firestore,您可以使用以下方法验证:description
字段的字符数不能超过100个。
service cloud.firestore {
match /databases/{database}/documents {
match /col1/doc1 {
allow write: if resource.data.description.length <= 100;
match /subcollection1/{doc=**} {
allow write: if resource.data.description.length <= 100;
}
}
}
}
这适用于col1/doc
和subcollection1
中的所有文档。请注意,这些规则不会限制描述的长度,因为安全规则无法修改写入的数据。相反,规则会拒绝描述超过100个字符的文字。
(据我所知)没有办法将规则应用于仅一个文档的每个子集合。我所知道的最接近的方法是将其应用于所有文档及其子集合:
match /col1/(document=**} {
allow write: if resource.data.description.length <= 100;
}
这会将验证应用于col1
中的所有文档以及该文档下的所有子集合中。
答案 1 :(得分:0)
我尝试从其他答案中获得验证,但没有成功。 Firestore只是不喜欢检查资源数据值的.length。
我到处搜索,这篇文章对我有帮助: https://fireship.io/snippets/firestore-rules-recipes/
dicts=[{0: 'ATO'}, {1: 'CC'}, {1: 'CD'}, {2: 'GYU'}, {2: 'JOI'}, {3: 'AFD'}]
values = {}
for d in dicts:
for key, val in d.items():
if key in values:
values[key].append(val)
else:
values[key] = [val]
for val in values.values():
print(", ".join(val))