如何在Firestore上检查空文档?

时间:2018-07-27 11:26:15

标签: java android firebase google-cloud-firestore

因此,我试图删除Firebase Firestore上不包含任何字段的文档。但是在删除文档之前,如何检查文档中是否没有数据?

enter image description here

3 个答案:

答案 0 :(得分:2)

要解决此问题,您应该以{{1​​}}的形式从数据库中获取数据:

Map

要仅检查文档是否存在,并不表示该文档为空。该文档可以存在(如您的屏幕快照中所示),但没有设置属性。由于Cloud Firestore数据库中的每个文档都是Map,因此您可以使用yourDocumentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() { @Override public void onComplete(@NonNull Task<DocumentSnapshot> task) { if (task.isSuccessful()) { DocumentSnapshot document = task.getResult(); if (document.exists()) { Map<String, Object> map = document.getData(); if (map.size() == 0) { Log.d(TAG, "Document is empty!"); } else { Log.d(TAG, "Document is not empty!"); } } } } }); 方法来查看是否为空。

答案 1 :(得分:0)

为了检查文档incoming是否为空,可以检查所存储对象的键数。如果存储的密钥为0,则可以删除文档。

打字稿中的示例代码:

const doc = await firestore()
            .collection('Collection')
            .doc('incoming)
            .get();

const numberOfKeys = Object.keys(doc.data()).length;

if (numberOfKeys === 0) {
    await firestore()
    .collection('Collection')
    .doc('incoming)
    .delete();

答案 2 :(得分:0)

我使用 whereEqualsTo 但您可以使用任何查询:

 FirebaseFirestore db = FirebaseFirestore.getInstance();
    Query docRef = db.collection("rewards").whereEqualTo("adminId", Common.currentUser.getContact());
    docRef.addSnapshotListener((value, error) -> {
        if (value.getDocuments().size() == 0) {
            Snackbar snackbar = Snackbar.make(findViewById(R.id.content), "Empty", Snackbar.LENGTH_LONG);
            snackbar.show();
        }

它对我有用