安卓端Firestore缺失索引构建链接未在logcat输出问题咨询
问题原因
你当前使用的com.google.firebase:firebase-bom:28.2.1对应的Firestore SDK版本为24.1.1,该版本及后续版本调整了默认异常输出逻辑:为了精简默认日志体量、避免敏感信息泄露,索引缺失的异常默认不会在堆栈中直接附带索引构建链接,仅会输出基础的FAILED_PRECONDITION: no matching index found错误提示。
无需手动创建索引的获取链接方法
方法1:捕获异常并打印完整错误描述
执行查询时主动捕获FirebaseFirestoreException,打印异常状态的完整描述信息即可拿到索引构建链接,示例代码如下:db.collection("你的集合名").whereEqualTo("字段1", 值).orderBy("字段2") .get() .addOnFailureListener(e -> { if (e instanceof FirebaseFirestoreException) { FirebaseFirestoreException firestoreException = (FirebaseFirestoreException) e; // 该行日志会输出包含索引构建链接的完整错误信息 Log.e("Firestore索引错误", firestoreException.getStatus().getDescription()); } });方法2:开启Firestore调试日志
在应用初始化阶段添加代码开启Firestore的详细调试日志,索引缺失的完整信息(含可直接点击的构建链接)会自动输出到Logcat:// 仅在开发环境开启,生产环境请关闭避免泄露业务数据 FirebaseFirestore.getInstance().setLoggingEnabled(true);方法3:通过本地模拟器获取
如果你开发阶段使用Firebase本地模拟器套件测试,索引缺失的对应构建链接会直接输出到模拟器控制台,点击即可跳转创建。
拿到构建链接后直接在登录了Firebase账号的浏览器中打开,确认索引参数后点击确认即可一键完成索引创建,无需手动在控制台填写字段、排序规则等配置。
内容的提问来源于stack exchange,提问作者Lahiru Chandima
相关产品推荐
相关产品推荐

