我已经在Firestore开发数据库上设置了多个不同的索引。现在,我想将它们导出到firestore.indexes.json中,这样设置prod环境的过程会更容易。有没有办法使用Firebase CLI导出这些索引?这同样适用于安全规则,尽管我知道我可以复制粘贴它们。
firestore.indexes.json
iovurdzv1#
有可能!从firebase项目文件夹中的CLI firebase firestore:indexes运行。如果您已经设置了索引并通过CLI登录到Firebase,您将得到一个格式化的JSON输出供您复制。示例:
firebase firestore:indexes
{ "indexes": [ { "collectionId": "teslaData", "fields": [ { "fieldPath": "Model", "mode": "ASCENDING" }, { "fieldPath": "Price", "mode": "ASCENDING" } ] } ] }
导出的索引可以使用firebase deploy --only firestore:indexes重新导入。请检查以下文档提取。https://firebase.google.com/docs/firestore/query-data/indexing您也可以使用Firebase CLI部署索引。首先,在您的项目目录中运行Firebase init firestore。在安装过程中,Firebase CLI会生成一个JSON文件,其中包含正确格式的默认索引。编辑该文件以添加更多索引,然后使用Firebase deploy命令部署它。如果您只想部署索引,请添加--only firestore:indexes标志。如果您使用Firebase控制台编辑索引,请确保同时更新您的本地索引文件。我正在使用Firebase CLI 4.2.1,如果有帮助的话,祝你好运:)编辑:截至9.6.0,它仍在工作。
firebase deploy --only firestore:indexes
4.2.1
9.6.0
qhhrdooz2#
在您的Firebase项目文件夹中,在终端中执行以下命令:
firebase firestore:indexes > firestore.indexes.json
它将保存一个名为firestore.indexes.json的文件,其中包含您的索引。然后可以将该文件上传到其他Firebase项目。
cnh2zyt33#
我认为目前还没有API可以从项目中获取Firestore安全规则。您可以通过CLI部署规则,也可以将其嵌入自定义节点脚本中,并从CI进程中调用。但据我所知,目前还没有API可以从项目中读取规则。这听起来是个很好的理由。
yvfmudvl4#
如果接受的答案对您无效(我得到了一个权限错误)对于firestore索引,你可以去你的firebase控制台〉云firestore〉索引,然后在检查器中打开网络选项卡,清除所有请求并刷新页面。(我在网络标签的搜索栏中搜索“indexes "找到了我的)在网络请求的XHR过滤器中。它应该看起来像”indexes?key=...“,你可以复制这个JSON响应。如果你已经用firebase init在你的项目中初始化了firebase,你可以简单地把它粘贴到你的项目的firestore.indexes.json文件中,然后把每个name属性改为collectionGroup属性。例如:'name': 'projects/[your project name]...'至'collectionGroup': '[name of collection for this index]'运行firebase deploy --only firestore:indexes,将在文本编辑器中所做的任何更改更新回firestore索引选项卡对于firestore安全规则,以一种不太复杂但类似的方式,您可以将firebase控制台中显示的规则复制并粘贴到项目的firestore.rules文件中。firestore.indexes.json文件示例
firebase init
'name': 'projects/[your project name]...'
'collectionGroup': '[name of collection for this index]'
{ "indexes": [ { "collectionGroup": "faq", "queryScope": "COLLECTION", "fields": [ { "fieldPath": "searchKeywords", "arrayConfig": "CONTAINS" }, { "fieldPath": "answered", "order": "ASCENDING" }, { "fieldPath": "relevanceScore", "order": "ASCENDING" }, { "fieldPath": "__name__", "order": "ASCENDING" } ] } ] }
cnwbcb6i5#
这是项目文件的布局方式myProjectFolder
myProjectFolder
.firebaserc
firebase.json
functions
在文件.firebaserc中,将名称更改为您的开发项目:
{ "projects": { "default": "myApp-dev" } }
myApp-prod
在文件firebase.json中,确保其索引指向先前导出的firestore.indexes.json:
{ "functions": [ { "source": "functions", "codebase": "default", "ignore": [ "node_modules", ".git", "firebase-debug.log", "firebase-debug.*.log" ], "predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint", "npm --prefix \"$RESOURCE_DIR\" run build" ] } ], "firestore": { "indexes": "firestore.indexes.json" } }
efzxgjgh6#
任何集成开发环境都依赖于支持Node.js(Firebase CLI所需)的操作系统。因此,如果您查看Nodes Filesystem文档,就会看到如何通过编程(通过JavaScript)操作(复制/粘贴)文件的示例。至于如何通过编程部署到Firebase,请参见child_process.spawn
6条答案
按热度按时间iovurdzv1#
有可能!
从firebase项目文件夹中的CLI
firebase firestore:indexes
运行。如果您已经设置了索引并通过CLI登录到Firebase,您将得到一个格式化的JSON输出供您复制。
示例:
导出的索引可以使用
firebase deploy --only firestore:indexes
重新导入。请检查以下文档提取。https://firebase.google.com/docs/firestore/query-data/indexing
您也可以使用Firebase CLI部署索引。首先,在您的项目目录中运行Firebase init firestore。在安装过程中,Firebase CLI会生成一个JSON文件,其中包含正确格式的默认索引。编辑该文件以添加更多索引,然后使用Firebase deploy命令部署它。如果您只想部署索引,请添加--only firestore:indexes标志。如果您使用Firebase控制台编辑索引,请确保同时更新您的本地索引文件。
我正在使用Firebase CLI
4.2.1
,如果有帮助的话,祝你好运:)编辑:截至
9.6.0
,它仍在工作。qhhrdooz2#
在您的Firebase项目文件夹中,在终端中执行以下命令:
它将保存一个名为firestore.indexes.json的文件,其中包含您的索引。
然后可以将该文件上传到其他Firebase项目。
cnh2zyt33#
我认为目前还没有API可以从项目中获取Firestore安全规则。您可以通过CLI部署规则,也可以将其嵌入自定义节点脚本中,并从CI进程中调用。但据我所知,目前还没有API可以从项目中读取规则。
这听起来是个很好的理由。
yvfmudvl4#
如果接受的答案对您无效(我得到了一个权限错误)对于firestore索引,你可以去你的firebase控制台〉云firestore〉索引,然后在检查器中打开网络选项卡,清除所有请求并刷新页面。(我在网络标签的搜索栏中搜索“indexes "找到了我的)在网络请求的XHR过滤器中。它应该看起来像”indexes?key=...“,你可以复制这个JSON响应。
如果你已经用
firebase init
在你的项目中初始化了firebase,你可以简单地把它粘贴到你的项目的firestore.indexes.json文件中,然后把每个name属性改为collectionGroup属性。例如:'name': 'projects/[your project name]...'
至'collectionGroup': '[name of collection for this index]'
运行
firebase deploy --only firestore:indexes
,将在文本编辑器中所做的任何更改更新回firestore索引选项卡对于firestore安全规则,以一种不太复杂但类似的方式,您可以将firebase控制台中显示的规则复制并粘贴到项目的firestore.rules文件中。
firestore.indexes.json
文件示例cnwbcb6i5#
这是项目文件的布局方式
myProjectFolder
.firebaserc
firebase.json
firestore.indexes.json
functions
在文件
.firebaserc
中,将名称更改为您的开发项目:firebase firestore:indexes > firestore.indexes.json
,将当前dev项目的索引导出到文件中.firebaserc
中的项目名称更改为myApp-prod
在文件
firebase.json
中,确保其索引指向先前导出的firestore.indexes.json
:firebase deploy --only firestore:indexes
efzxgjgh6#
任何集成开发环境都依赖于支持Node.js(Firebase CLI所需)的操作系统。因此,如果您查看Nodes Filesystem文档,就会看到如何通过编程(通过JavaScript)操作(复制/粘贴)文件的示例。至于如何通过编程部署到Firebase,请参见child_process.spawn