使用Firebase的Firestore时,如何验证列表中的项目或地图?

时间:2019-01-14 19:23:11

标签: firebase google-cloud-firestore

我找不到在Firestore中验证列表的内容的解决方案。有什么解决方案吗?

我不想使用新的集合,因为对于如此少量的数据来说,这是没有意义的(并且最终将导致不必要的读取操作,并且将数据保持在不原始文件)。

为每个文档存储一些图像详细信息:

[
  {
    "filename": "example.png",
    "author": "example",
    "caption": "...",
  },
  ...
]

或者,每个文档存储一些标签:

[
  "tag text 1",
  "tag text 2",
  ...
]

我如何访问每个项目(或循环遍历?)以对其进行验证,因此在带有图像的第一个示例中,可以对其进行验证(例如):

  • 每个项目都是一张地图,
  • 文件名是一个字符串,
  • author是一个字符串,
  • 标题是特定长度的字符串

或者,对于标签示例,

  • 每个项目都是一个特定长度的字符串吗?

还是有更好的解决方案,可以在不创建新集合或子集合的情况下将此类数据存储在文档中?

1 个答案:

答案 0 :(得分:1)

  

我如何访问每个项目(或遍历?)以进行验证。

如果您要在服务器端安全性规则中进行此操作,那么您就已经触手可及:Firebase的服务器端安全性规则无法循环。请参见reference documentation for the operations that can be performed on a List in a document。这限制了在安全规则中可以完成的工作,据我所知,您提到的所有用例都不能仅通过安全规则来实现。

我能想到的最简单的方法是使用Cloud Functions实现逻辑。您可以 让Cloud Function检查当前集合中的文档,或者 您可以让客户端写入其他集合(“待处理”文档),让Cloud Function验证文档,然后将其移至实际集合。