firebase - 如何同步 Firestore 规则和索引?

标签 firebase google-cloud-firestore firebase-security

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。




Improve this question




我有一个使用 Firestore 的 Firebase 项目。我经常在 Firebase 控制台上手动修改安全规则和索引,但我的开发机器上也有本地副本( firestore.rulesfirestore.indexes.json ),这样做时它们会变得不同步。
有没有办法自动同步它们?例如,如果我在控制台中创建了一个索引,那么我如何将该索引保存在我的 firestore.indexes.json 中? ?
到目前为止,我手动将这些更改应用到本地副本,但这显然是一个容易出错的过程,我试图避免意外覆盖过时的索引或规则。

最佳答案

没有自动机制来处理 Firebase 控制台中声明的安全规则与使用 CLI 部署时在本地声明的规则之间的冲突。

如果您的本地项目设置为部署 Firestore 安全规则,当您使用 CLI 部署时,它们将覆盖控制台中的规则。 (请参阅此文档项:https://firebase.google.com/docs/rules/manage-deploy#edit_and_update_your_rules)

有两种可能的方法:

  • 设置本地项目以通过 CLI 和 部署 Firestore 安全规则部署前只在本地修改规则 (不是 super 灵活)
  • 不要在本地定义安全规则,而只能在 Firebase 控制台中定义。为此,您应该删除 "rules": "firestore.rules"来自 firebase.json 的线路文件并删除 firestore.rules来自您项目的文件。

  • 请注意,“使用 CLI 允许您使用应用程序代码将规则置于版本控制之下”。

    使用索引,情况有点不同 : 如果两个版本存在差异(本地firestore.indexes.json文件和控制台中的索引),通过CLI部署时会在终端收到警告:
    i  firestore: there are some indexes defined in your project that are not present in your firestore indexes file. Run firebase firestore:indexes and save the result to correct the discrepancy.
    i  firestore: there are some field overrides defined in your project that are not present in your firestore indexes file. Run firebase firestore:indexes and save the result to correct the discrepancy.
    

    通过运行 firebase firestore:indexes ,索引将打印在终端中,您将能够复制它们以手动更新 firestore.indexes.json文件。

    关于firebase - 如何同步 Firestore 规则和索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307808/

    相关文章:

    javascript - 在 React js 中从 firebase 数据库信息设置状态

    flutter - 使用 StreamBuilder 而不是 FeatureBuilder 来避免 Firestore 中的 whereIn 10 限制

    ios - Swift 4 使用 CodableFirebase 和自定义类处理来自 Firestore 的 nil 值

    java - 如何根据我的实时数据库以及 OTP 验证来验证用户?

    google-cloud-firestore - 在 Firestore 安全规则 str.matches(regex) 中将 "i"标志放在哪里?

    swift - 如果没有互联网,swift 中的 Firebase Functions 不会返回任何内容

    android - 无法在 android 中同步 gradle for firebase

    javascript - 如何设置firebase数据库安全规则?

    javascript - 如何将 Firebase 查询中的对象推送到 this.state

    firebase - 如何在 Flutter 中使用查询访问 Cloud Firestore 的数组索引?