Flutter中如何为Firestore单字段集合组查询创建索引?
解决Firestore集合组查询的索引创建问题
针对你使用collectionGroup('signInData')结合where('eAddress', isEqualTo: ...)的查询,需要手动创建集合组索引,步骤如下:
- 打开Firebase控制台,进入你的项目的Firestore数据库页面
- 切换到「索引」标签,点击页面右上角的「创建索引」按钮
- 在弹出的索引创建界面,选择「集合组索引」类型
- 在「集合组ID」输入框中填写
signInData(与你代码中collectionGroup的名称完全一致) - 在「字段」区域,添加一个字段:选择
eAddress,排序方式选「升序」或「降序」均可(isEqualTo查询对两种排序都兼容) - 点击「下一步」,确认索引配置无误后,点击「创建索引」
- 等待索引构建完成(一般需要1-5分钟,控制台会显示构建状态),完成后你的查询即可正常执行
额外提示
代码中if (_auth != null)的判断是多余的,因为_auth = auth.FirebaseAuth.instance永远不会为null;另外建议在访问_auth.currentUser!.email前增加非空判断,避免用户未完成登录时出现空指针异常。
内容的提问来源于stack exchange,提问作者mathems32
相关产品推荐
相关产品推荐

