【问题标题】:How can I enforce database schema in Firestore?如何在 Firestore 中强制执行数据库架构?
【发布时间】:2019-05-18 01:48:23
【问题描述】:

我想在 Firestore 中强制实施数据库架构,这是一种 noSQL 风格的数据库,默认情况下不需要方案。

到目前为止,我已经研究过使用 Firebase 规则系统作为实施架构的可能途径: https://firebase.google.com/docs/firestore/security/rules-structure

我想:

  1. 确保某些字段具有正确的数据类型(字符串、数字、布尔值)
  2. 确保存在某些字段(例如:用户类中的名字和姓氏)
  3. 如果不需要,请确保将字段设置为“未定义”。 (这个我不确定 - 我需要这样做吗?)

有没有人找到从服务器端强制执行架构的好方法?

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions firebase-security


    【解决方案1】:

    听起来您已经找到了答案 - 安全规则。他们可以检查以确保一切都按您期望的方式设置。您应该知道,这适用于通过客户端 SDK 进行的所有访问,但在您的后端使用 Admin SDK(如果有)时则无效。

    您也可以在数据添加完毕后,使用Cloud Functions进行更多检查,如果仍然有问题,请撤消操作。

    【讨论】:

      【解决方案2】:

      Firestore 不是关系数据库,因此架构的概念不适用 [来源 Cloud Firestore Data model]。 Firestore 中的数据类型由firestore.rules 安全规则强制执行。

      在关系数据库中,模式定义了表、字段、 关系、视图、索引、包、过程、函数、 队列、触发器、类型、序列、物化视图、同义词、 数据库链接、目录、XML 模式和其他元素。

      [Wikipedia]

      【讨论】:

        【解决方案3】:

        应使用模式描述和验证库,例如 Joi - https://github.com/hapijs/joi

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-22
          • 2018-04-15
          • 1970-01-01
          • 2019-06-03
          • 1970-01-01
          • 2019-11-07
          • 1970-01-01
          相关资源
          最近更新 更多