2017-12-31 228 views
1

Firestore 데이터베이스에 내 컬렉션이 있는지 확인하는 데 문제가 있습니다. 내가 중포 기지 실시간 데이터베이스 작업 때 은 내가 사용할 수도 : Cloud Firestore 컬렉션이 있는지 확인하는 방법은 무엇입니까? (querysnapshot)

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(); 컬렉션이 비어 있거나 존재하지 않으면 실제로 실행하고 싶은 것이 있습니다. 알려주세요. 당신이 Task<QuerySnapshot>에서 QuerySnapshot을 얻기를 위해 QuerySnapshot

전화 task.result을 처리하는 동안 덕분에, D.

+0

if (documentSnapshots.size() <0)'이 절대로 안됩니다. if (documentSnapshots.size() == 0)'또는'if (documentSnapshots.size()> 0)'이어야합니다. –

+0

@FrankvanPuffelen OK! 나는 무슨 일이 있었는지 모르지만 지금은 효과가있다. <이전에는 시도한 바 없었지만, 지금은 그랬습니다. 고마워요! 하지만이 경우는 onSuccess로 작업하는 동안 작동합니다. 나는 "for"루프를 만들고 싶기 때문에 onComplete를 사용하기 전에 작업했습니다. 내가 원래 게시물에서했던 것처럼, 그것도 onSuccess와 함께 작동 할 수 있습니까? – WhiteNinja

+0

'onSuccess'는 작업이 완료되고 성공하면 실행됩니다. 모든 데이터를로드하지 않고 완료하는 태스크는 데이터를로드 할 필요가 없기 때문에 성공했습니다. 그래서'onSuccess'도 거기에서 작동 할 것입니다. –

답변

2

exists()DocumentSnapshot에 적용됩니다.

그 후 result.getDocuments()으로 전화를 걸어 DocumentSnapshot을 각각 exists() 번으로 반복합니다.

+0

고마워요! 실제로 나는 다른 방법을 찾았지만, 미래의 필요를 위해 정말로 도움이됩니다. – WhiteNinja

+0

@DaniyyelTouboul이 대답이 도움이 되었다면 당신은 그것을 upvote해야합니다. 당신이 묻는 질문에 대답했을 때만 받아 들여야합니다. –

+0

@FrankvanPuffelen 불행히도 나는 아직 투표 할 수 없습니다. 내 사용자는 여전히 제한적입니다. – WhiteNinja