如何在 Fire Store 中查询集合的所有文档

我正在尝试在 Google 地图上显示来自 Cloud Firestore 的信息。我可以使用以下代码从文档中应用标记,但是我有多个文档需要显示其中的数据。


下面是当前代码,正如我所说,它成功地显示了一个带有来自一个文档的信息的标记,但是每个文档都包含需要在地图上显示的不同位置。


    private void addMapMarkers(){


    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();

    CollectionReference pointsRef = rootRef.collection("notes");

    DocumentReference docRef = pointsRef.document("u20UmWSrlP0EiZH9CNP3");

    docRef.get().addOnCompleteListener(new 

    OnCompleteListener<DocumentSnapshot>() {

        @Override

        public void onComplete(@NonNull Task<DocumentSnapshot> task) {

            if (task.isSuccessful()) {

                DocumentSnapshot document = task.getResult();

                if (document.exists()) {

                    String latitude = document.getString("Latitude");

                    String longitude = document.getString("Longitude");

                    String name = document.getString("Attraction Name");


                    float lat = Float.parseFloat(latitude);

                    float lng = Float.parseFloat(longitude);


                    LatLng latLng = new LatLng(lat, lng);

                    mMaps.addMarker(new 

                    MarkerOptions().position(latLng).title(name));

                }

            }

        }

    });

}

数据库结构如下:

http://img.mukewang.com/6361d32900014bfe19191079.jpg

智慧大石
浏览 86回答 2
2回答

慕神8447489

要获取所有文档的值latitude和longitude属性,只需使用以下代码行:FirebaseFirestore rootRef = FirebaseFirestore.getInstance();CollectionReference notesRef = rootRef.collection("notes");notesRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onComplete(@NonNull Task<QuerySnapshot> task) {&nbsp; &nbsp; &nbsp; &nbsp; if (task.isSuccessful()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (QueryDocumentSnapshot document : task.getResult()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; float lat = Float.parseFloat(document.getString("Latitude"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; float lng = Float.parseFloat(document.getString("Longitude"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String name = document.getString("Attraction Name");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LatLng latLng = new LatLng(lat, lng);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mMaps.addMarker(new MarkerOptions().position(latLng).title(name));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }});所以解决这个问题的关键是使用task.getResult()that可以帮助你遍历QueryDocumentSnapshot对象。

翻过高山走不出你

如果您想要所有文档数据,您可以尝试以下操作:-db.collection("Chat").addSnapshotListener(new EventListener<QuerySnapshot>() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch (dc.getType()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case ADDED:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; Log.d("TAG", "New Msg: " + dc.getDocument().toObject(Message.class));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case MODIFIED:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; Log.d("TAG", "Modified Msg: " + dc.getDocument().toObject(Message.class));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case REMOVED:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; &nbsp;Log.d("TAG", "Removed Msg: " + dc.getDocument().toObject(Message.class));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java