如何检查Cloud Firestore集合是否存在? (查询快照)

时间:2017-12-31 14:37:05

标签: java android database firebase google-cloud-firestore

我在检查我的馆藏是否存在于Firestore数据库中时遇到问题。 当我使用Firebase Realtime数据库时,我可以使用:

if(databaseSnapshot.exists) 

现在有了Firestore,我想做同样的事情。 我已经尝试了

  if (documentSnapshots.size() < 0) 

但它不起作用。 这是当前的代码:

public void pullShopItemsFromDatabase() {
    mShopItemsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (DocumentSnapshot document : task.getResult()) {
                    ShopItem shopItem = document.toObject(ShopItem.class);
                    shopItems.add(new ShopItem(shopItem.getImageUrl(), shopItem.getTitle(), shopItem.getSummary(), shopItem.getPowerLinkID(), shopItem.getlinkToShopItem(),shopItem.getLinkToFastPurchase(), shopItem.getKey(), shopItem.getPrice(),shopItem.getVideoID()));
                }
                if (shopItems != null) {
                    Collections.sort(shopItems);
                    initShopItemsRecyclerView();
                }
            } else {
                Log.w(TAG, "Error getting documents.", task.getException());
                setNothingToShow();
            }
        }
    });
}

函数:setNothingToShow(); 如果我的收藏是空的/不存在,实际上我想要执行。 请指教! 谢谢, d。

2 个答案:

答案 0 :(得分:3)

当您处理exists()

时,

DocumentSnapshot适用于QuerySnapshot

调用task.result,以便从QuerySnapshot中获取Task<QuerySnapshot>

然后,请致电result.getDocuments()并对其上的每个DocumentSnapshot来电exists()进行迭代。

答案 1 :(得分:2)

使用DocumentSnapshot.size() >0检查集合是否存在。

这是我代码中的一个示例:

  db.collection("rooms").whereEqualTo("pairId",finalpairs)
         .get()
         .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                if(task.getResult().size() >0) {
                    for (DocumentSnapshot document : task.getResult()) {
                        Log.d(FTAG, "Room already exists, start the chat");

                    }
                }else{
                    Log.d(FTAG, "room doesn't exist create a new room");

                }
            } else {

                Log.d(FTAG, "Error getting documents: ", task.getException());
            }
        }
    });