2017-12-31 143 views
1

私のコレクションがFirestoreデータベースに存在するかどうかをチェックするのに問題があります。 私は私が使用している可能性がFirebaseリアルタイムデータベースで働いていた時: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)'は決してtrueになりません。 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この回答が役に立ちましたら、アップアップしてください。あなたはそれがあなたが尋ねた質問に答えたときにそれを受け入れるべきです、それはやっていないようです。 –

+0

@FrankvanPuffelen残念ながら私はまだ投票できません。私のユーザーはまだ限られています。 – WhiteNinja

関連する問題