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

我在 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;

}

我究竟做错了什么?


梵蒂冈之花
浏览 132回答 2
2回答

LEATH

由于您要求 API 检索String字段latitude,因此错误会通知您没有latitude字段是 `String.&nbsp;正如文档所说:RuntimeException如果值不是字符串则抛出。该字段的值latitude可能存储为数字,在这种情况下,您可以直接将其作为数字获取。由于该值很可能存储为双精度值,因此可以通过调用来完成getDouble:doc.getDouble("latitude")或者通过调用 将其作为通用值获取get,并将其转换为字符串:String.valueOf(doc.get("latitude"))

慕妹3242003

由于您正在打印日志Log.d(TAG, doc.getString("latitude"));而不是使用:Log.d(TAG,&nbsp;String.valueOf(doc.getString("latitude")));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java