You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:46:23