firebase 如何同步Firestore规则和索引?[已关闭]

fnvucqvd  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(122)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

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

k7fdbhmy

k7fdbhmy1#

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

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

有两种可能的方法:
1.设置您的本地项目以通过CLI部署Firestore安全规则,并且在部署之前仅在本地修改规则(不是非常灵活)
1.不要在本地定义安全规则,而只能在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文件。

相关问题