我找不到在Firestore中验证列表的内容的解决方案。有什么解决方案吗?
我不想使用新的集合,因为对于如此少量的数据来说,这是没有意义的(并且最终将导致不必要的读取操作,并且将数据保持在不原始文件)。
为每个文档存储一些图像详细信息:
[
{
"filename": "example.png",
"author": "example",
"caption": "...",
},
...
]
或者,每个文档存储一些标签:
[
"tag text 1",
"tag text 2",
...
]
我如何访问每个项目(或循环遍历?)以对其进行验证,因此在带有图像的第一个示例中,可以对其进行验证(例如):
或者,对于标签示例,
还是有更好的解决方案,可以在不创建新集合或子集合的情况下将此类数据存储在文档中?
答案 0 :(得分:1)
我如何访问每个项目(或遍历?)以进行验证。
如果您要在服务器端安全性规则中进行此操作,那么您就已经触手可及:Firebase的服务器端安全性规则无法循环。请参见reference documentation for the operations that can be performed on a List
in a document。这限制了在安全规则中可以完成的工作,据我所知,您提到的所有用例都不能仅通过安全规则来实现。
我能想到的最简单的方法是使用Cloud Functions实现逻辑。您可以 让Cloud Function检查当前集合中的文档,或者 您可以让客户端写入其他集合(“待处理”文档),让Cloud Function验证文档,然后将其移至实际集合。