如何将Firestore索引纳入本地项目或设置部署时默认不删除?
解决Firebase部署时Firestore索引删除提示问题
一、将索引纳入本地项目目录
有两种方式可以把云端的索引同步到本地:
导出所有云端索引到本地
在终端直接执行Firebase CLI命令:firebase firestore:indexes > firestore.indexes.json这个命令会把项目里所有Firestore索引导出到本地的
firestore.indexes.json文件,你提到的users集合的role、name升序索引会自动包含进去。如果本地已有这个文件,执行前记得备份原有内容,避免被覆盖。手动添加索引到本地文件
若不想覆盖现有本地索引,可手动编辑firestore.indexes.json(没有就新建),添加对应索引的配置:{ "indexes": [ { "collectionGroup": "users", "queryScope": "COLLECTION", "fields": [ { "fieldPath": "role", "order": "ASCENDING" }, { "fieldPath": "name", "order": "ASCENDING" } ] } ], "fieldOverrides": [] }保存文件后,下次部署时CLI会识别到这个索引,不会再弹出删除提示。
二、设置始终不删除未纳入本地的索引
如果不想把索引同步到本地,可通过两种方式跳过删除检测:
部署时添加参数
每次部署时加上--no-delete-indexes参数,命令如下:firebase deploy --no-delete-indexes这样CLI会直接跳过删除未在本地文件中找到的索引的步骤,不会弹出确认提示。
修改firebase.json默认配置
打开项目根目录的firebase.json,在firestore配置块里添加"deleteIndexes": false,示例如下:{ "firestore": { "rules": "firestore.rules", "indexes": "firestore.indexes.json", "deleteIndexes": false } }配置完成后,以后执行
firebase deploy时会默认跳过索引删除检测,不用每次都加参数。
内容的提问来源于stack exchange,提问作者Abraham
相关产品推荐
相关产品推荐

