Firebase 如何同步Firestore规则和索引?

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

我有一个Firebase项目,它使用Firestore。我经常在Firebase控制台上手动修改安全规则和索引,但我的开发机器上也有本地副本(
firestore.rules
firestore.indexes.json
),当我这样做时,这些副本会变得不同步

有没有办法自动同步它们?例如,如果我在控制台中创建了一个索引,那么如何将该索引持久化到我的
firestore.indexes.json


到目前为止,我正在手动将这些更改应用于本地副本,但这显然是一个容易出错的过程,我正试图避免使用过时的索引或规则意外重写。

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

如果您的本地项目设置为部署Firestore安全规则,则在使用CLI部署时,它们将覆盖控制台中的规则。(请参阅此文档项:)

有两种可能的方法:

  • 设置本地项目以通过CLI部署Firestore安全规则,并且在部署前仅在本地修改规则(不是超级灵活)
  • 不要在本地定义安全规则,而只能在Firebase控制台中定义。为此,您应该从
    firebase.json
    文件中删除
    “rules”:“firestore.rules”
    行,并从项目中删除
    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:indexes>firestore/firestore.indexes.json
    自动更新?Renaud您在哪里找到此命令?我在任何地方都找不到它的文档。@phatmann它是文件的一部分。您可以通过运行
    firebase
    查看命令使用帮助。我不知道这个问题是否“基于意见”,但这是一个真正的问题,答案和注释包含真正有用的解决方案。没有必要再打开它,但它不应该被关闭。