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

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

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

智慧大石 2022-11-02 10:15:13
我正在尝试在 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));                }            }        }    });}数据库结构如下:
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

要获取所有文档的值latitude和longitude属性,只需使用以下代码行:


FirebaseFirestore rootRef = FirebaseFirestore.getInstance();

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

notesRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {

    @Override

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

        if (task.isSuccessful()) {

            for (QueryDocumentSnapshot document : task.getResult()) {

                float lat = Float.parseFloat(document.getString("Latitude"));

                float lng = Float.parseFloat(document.getString("Longitude"));

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

                LatLng latLng = new LatLng(lat, lng);

                mMaps.addMarker(new MarkerOptions().position(latLng).title(name));

            }

        }

    }

});

所以解决这个问题的关键是使用task.getResult()that可以帮助你遍历QueryDocumentSnapshot对象。


查看完整回答
反对 回复 2022-11-02
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

如果您想要所有文档数据,您可以尝试以下操作:-


db.collection("Chat").addSnapshotListener(new EventListener<QuerySnapshot>() {

            @Override

            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {

                for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {

                    switch (dc.getType()) {

                        case ADDED:

                            //  Log.d("TAG", "New Msg: " + dc.getDocument().toObject(Message.class));


                            break;

                        case MODIFIED:


                            //      Log.d("TAG", "Modified Msg: " + dc.getDocument().toObject(Message.class));

                            break;

                        case REMOVED:

                            //     Log.d("TAG", "Removed Msg: " + dc.getDocument().toObject(Message.class));

                            break;

                    }

                }

            }

        });


查看完整回答
反对 回复 2022-11-02
  • 2 回答
  • 0 关注
  • 84 浏览

添加回答

举报

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