我在检查我的馆藏是否存在于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。
答案 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());
}
}
});