如何同步Firestore规则和索引?

时间:2019-05-25 18:53:50

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

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

我想知道同步它们的最佳实践是什么。 到目前为止,我正在将这些更改手动应用于本地副本,但这显然是一个容易出错的过程。

我不想通过部署过时的规则意外覆盖那些设置。

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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

有两种可能的方法:

  1. 设置本地项目以通过CLI部署Firestore安全规则,并且仅在部署前在本地修改规则(不是超级灵活)
  2. 不要在本地定义安全规则,而只能在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文件。