为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 firestore 中按字符串查询。RuntimeException 字段

无法在 firestore 中按字符串查询。RuntimeException 字段

梵蒂冈之花 2023-03-09 14:57:20
我在 java 中使用 firestore for android 编写小型应用程序。我正在尝试按集合中的纬度字段进行查询。我的集合中有一些用户,应该由这个查询返回——甚至浏览器中的 firestore 控制台也会返回这些用户。问题是我每次都会出错:java.lang.RuntimeException:字段“纬度”不是 java.lang.String我的代码:public Map<String, Object> getUsersBasedOnBounds2(LatLngBounds bounds){    db = FirebaseFirestore.getInstance();    Query query = db.collection(collection).whereGreaterThanOrEqualTo("latitude", (int)bounds.northeast.latitude);    query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {        @Override        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {            Log.d(TAG, queryDocumentSnapshots.getDocuments().toString());            for (QueryDocumentSnapshot doc : queryDocumentSnapshots){                Log.d(TAG, doc.getString("latitude"));            }        }    });    return null;}我究竟做错了什么?
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

由于您要求 API 检索String字段latitude,因此错误会通知您没有latitude字段是 `String. 正如文档所说:

RuntimeException如果值不是字符串则抛出。

该字段的值latitude可能存储为数字,在这种情况下,您可以直接将其作为数字获取。由于该值很可能存储为双精度值,因此可以通过调用来完成getDouble

doc.getDouble("latitude")

或者通过调用 将其作为通用值获取get,并将其转换为字符串:

String.valueOf(doc.get("latitude"))


查看完整回答
反对 回复 2023-03-09
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

由于您正在打印日志Log.d(TAG, doc.getString("latitude"));

而不是使用:

Log.d(TAG, String.valueOf(doc.getString("latitude")));


查看完整回答
反对 回复 2023-03-09
  • 2 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信