【问题标题】:Absurd Firestore Collections and Security Rules inheritance荒谬的 Firestore 集合和安全规则继承
【发布时间】:2020-12-22 02:09:15
【问题描述】:

我有这样的 Firestore 集合结构

../cards/{cardId}/data/{dataId}

safely read data 我需要这个关于 Firestore 安全规则的电话

get(/databases/$(database)/documents/cards/$(cardId)).data

然后比较卡片字段。每次我这样做基本上都是 2 次读取。

但是,如果我通过将其全部设为这样的父级来更改我的结构(但还必须在两个模型上创建一些类似的字段)。

../cards/{cardId}
../data/{dataId}

它确实只需要 1 次读取。但由于两个相似字段的变化,我每次都需要 2 次写入。写调用比读少,这使得它更便宜,但这对代码来说很烦人。这使得 Firestore 继承毫无用处。

我的意思是,Firestore 是否也可以免费读取父字段?至少对于安全规则。 Firestore 基本上是为每个字段创建索引,对吗?那么,它是否也可以只是understand 继承的含义,也就是使子know/have 父字段也一样?。或者这只是 NoSQL 的局限?每次遇到这种情况真的很烦。

【问题讨论】:

    标签: firebase google-cloud-firestore nosql


    【解决方案1】:

    Firestore 是否也可以免费读取父字段?

    Stack Overflow 不适合提出这样的问题。但我会自信地说,不,Firestore 不能有任何免费写入(在免费的每月津贴之外),否则它不会是一项可以靠收入来维持自己的服务。

    如果您有反馈要发送给 Firebase 团队,contact Firebase support directly。但我怀疑要求放宽系统的计费要求不会是他们会接受的要求。

    它是否也能理解继承的含义,即让孩子也知道/拥有父字段?

    您所描述的并不是真正的“继承”。它只是嵌套。集合可以嵌套在其他集合中的文档下。这些文档之间的关系仅存在于它们共同的路径前缀中。除此之外,每个文档都是完全独立的,与系统中的任何其他文档没有任何联系。

    或者这只是 NoSQL 的局限?

    它与 NoSQL 没有任何关系。集合和子集合之间的关系只是您可以在系统中组织数据的一种方式。您可以为您的应用选择最适合查询(和安全要求,当使用安全规则时)的组织方法。该组织是否嵌套,由您决定。

    但是没有办法组织您的数据以获得免费阅读。无论文档的组织方式如何,每次阅读文档都需要阅读 1 次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多