【问题标题】:Firestore: Check if the value in the document existFirestore:检查文档中的值是否存在
【发布时间】:2021-11-09 14:39:00
【问题描述】:

我的 Firestore UI 适配器中有这个查询

query = collectionReference.whereEqualTo("City", FirestoreConstants.CURRENT_CITY);

上面的查询会获取与当前城市相同的所有文档。 现在我想要实现的是,如果我的文档中不存在 FirestoreConstants.CURRENT_CITY,我只想获取我的 Firestore 数据库中的所有数据。

【问题讨论】:

  • 请参阅stackoverflow.com/questions/49579693/… 如果该字段不存在,您根本无法搜索。
  • 您也可以get() 您当前的查询然后在addOnSuccessListener 检查您的快照是否为空,然后在该参考中获取所有结果
  • if FirestoreConstants.CURRENT_CITY does not exist in my documents,查询将为空。所以检查查询是否为空,如果为空,则调用另一个查询来获取所有文档。

标签: java android google-cloud-firestore


【解决方案1】:

要解决这个问题,您需要检查您的查询是否返回一些结果。如果返回,则使用这些文档,否则,获取集合中的所有文档,如以下代码行所述:

query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            QuerySnapshot snapshot = task.getResult();
            if (!snapshot.isEmpty()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    Log.d(TAG, document.getId() + " => " + document.getData());
                }
            } else {
                collectionReference.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> t) {
                        if (t.isSuccessful()) {
                            for (QueryDocumentSnapshot document : t.getResult()) {
                                Log.d(TAG, document.getId() + " => " + document.getData());
                            }
                        } else {
                            Log.d(TAG, "Error getting documents: ", task.getException());
                        }
                    }
                });
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

【讨论】:

  • 嘿帕特里克。您是否尝试过我上面的解决方案,它有效吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!
猜你喜欢
  • 2019-04-19
  • 2021-07-22
  • 2020-10-05
  • 1970-01-01
  • 2021-11-25
  • 2021-11-01
  • 1970-01-01
  • 2018-03-23
  • 2022-01-24
相关资源
最近更新 更多