【问题标题】:Get and delete all documents in a Firestore subcollection获取和删除 Firestore 子集合中的所有文档
【发布时间】:2020-05-25 17:21:59
【问题描述】:

我想获取并删除名为“journal”的子集合中的所有文档,但它不起作用,也没有显示任何 toast 消息或错误。

如果有人告诉我出了什么问题,那将非常有帮助。非常感谢。

这是我用来获取和删除子集合中所有文档的代码:

final String userid = FirebaseAuth.getInstance.getCurrentUser().getUid();

    FirebaseFirestore. getInstance().collection("main").document(userid).collection("journal").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (final QueryDocumentSnapshot document : task.getResult()) {

 db.collection("main").document(userid).collection("journal").document(document.getId()).delete().addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                Toast.makeText(SettingsActivity.this, "Deleted: " + document.getId(), Toast.LENGTH_SHORT).show();
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Toast.makeText(SettingsActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                            }
                        });
                    }
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(SettingsActivity.this, "error getting: " + e.getMessage(), Toast.LENGTH_LONG).show();
            }
        });

Firestore 结构:

collection(main) ---> document(userid)---> collection(journal)---> document 1
                                                              ---> document 2
                                                              --> document 3

【问题讨论】:

  • 请编辑您的问题并将您的数据库结构添加为屏幕截图并告诉我们是否在 onFailure 中添加了某些内容?
  • @AlexMamo 截图添加,奇怪的是 onFailure 或 onSuccess 什么都没有烤:/
  • 我在您的屏幕截图中看不到任何“期刊”收藏。请添加正确的。
  • @AlexMamo 嗨,抱歉,刚刚添加了正确的 :)
  • 在这种情况下,您的设备上没有互联网连接。确保已连接。

标签: android google-cloud-firestore


【解决方案1】:

试试这个。

final String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();

FirebaseFirestore.getInstance().collection("main").document(userid).collection("journal").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
    @Override
    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
        for (DocumentSnapshot document: queryDocumentSnapshots.getDocuments()) {
            db.collection("main").document(userid).collection("journal").document(document.getId()).delete().addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Toast.makeText(SettingsActivity.this, "Deleted: " + document.getId(), Toast.LENGTH_SHORT).show();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(SettingsActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            });
        }
    }
});

另外,请确保您已将数据库规则设置为允许 删除 事件

【讨论】:

    猜你喜欢
    • 2018-11-01
    • 2018-04-03
    • 2018-10-19
    • 2020-09-08
    • 2018-08-23
    相关资源
    最近更新 更多