【问题标题】:How to get all documents from a nested firestore database如何从嵌套的 Firestore 数据库中获取所有文档
【发布时间】:2020-06-20 15:24:32
【问题描述】:

有人登录了应用程序。此人有一些订单,这些订单在详细的概览列表中进行拆分。不幸的是,输出上的这个列表是空的。如何获取详细概览列表中的订单值?

我的火力基地是这样的: 集合:用户 -> 文档用户 id -> 集合 bestellungen -> 文档 bestellungen id -> 集合 geasmtbestellungen。

我想要来自 gesamtbestellung 的所有文件。我有当前使用的 id 和集合 bestellungen 的 id

public void getGesamtbestellung(int bestellnr) {
    final FirebaseFirestore db = FirebaseFirestore.getInstance();
    final FirebaseAuth mAuth = FirebaseAuth.getInstance();

    db.collection("users").document(mAuth.getCurrentUser().getUid()).collection("bestellungen").document().collection("gesamtbestellungen").whereEqualTo("bestellnummer",61)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        ArrayList<Bestellung> list = new ArrayList<>();
                        //Toast.makeText(getActivity(), "Bestellungen wurden gefunden!", Toast.LENGTH_SHORT).show();
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            //Log.d(TAG, document.getId() + " => " + document.getData());
                            Bestellung best = document.toObject(Bestellung.class);
                            System.out.println("-------------------->" + best.toString());
                            list.add(best);
                        }
                        //System.out.println(list.get(0).toString());

                        //Toast.makeText(getActivity(), "Bestellungen wurden gefunden!", Toast.LENGTH_SHORT).show();
                    } else {
                        //Toast.makeText(getActivity(), "Es ist ein Fehler beim Abrufen der Bestellungen aufgetreten: " + task.getException().toString(), Toast.LENGTH_SHORT).show();
                        //Log.w(TAG, "Error getting documents.", task.getException());
                    }
                }
            });
}

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    这是您的查询:

    db
        .collection("users")
        .document(mAuth.getCurrentUser().getUid())
        .collection("bestellungen")
        .document()                             // note the missing document ID here
        .collection("gesamtbestellungen")
        .whereEqualTo("bestellnummer",61)
    

    请注意,您尚未确定“bestellungen”下的文档。不向document() 传递任何参数将生成一个带有随机ID 的文档引用,这几乎可以肯定你什么也找不到。

    如果您尝试查询特定文档下的子集合,则必须提供该文档的 ID。查询路径中没有通配符。

    如果您尝试查询 all 名为“gesamtbestellungen”的子集合中的all 文档,那么您将需要collection group query。 p>

    【讨论】:

    • 感谢您的回答!如何获取 bestellnummer 61 的所有文档的文档 ID?
    • 您是否单击了链接以阅读有关集合组查询的信息?
    猜你喜欢
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多