2017-11-12 5 views
0

例:チェックコレクションの有無 - Firestore

イベントスケジューリング機能を使用する前に、Firestoreとのアポイントメントを行う必要があります。

Example in the database: 
- Companie1 (Document) 
--- name 
--- phone 
--- Schedules (Collection) 
-----Event 1 
-----Event 2 

私は新しいスケジュールを実行する機能を持っています。

この例によれば、 Schedulesコレクションが存在するかどうかを確認する必要があります。

もし存在しなければ、私はスケジューリング機能を実行します。私がすでに存在しているなら、私は別の手順を行う必要があります。

私はすでにこのパターンを使用しており、正しくはありません。

db.collection("Companies").document(IDCOMPANIE1) 
     .get() 
     .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
      @Override 
      public void onComplete(@NonNull Task<QuerySnapshot> task) { 
       if (task.isSuccessful()) { 
        for (DocumentSnapshot document : task.getResult()) { 

        } 
       } else { 
        Log.d(TAG, "Error getting documents: ", task.getException()); 
       } 
      } 
     }); 

登録を行う前に、これを行う方法を見つける手助けが必要です。

答えて

1

これは単にNULLかどうかを確認する達成:

DocumentSnapshot document = task.getResult(); 
if (document != null) { 
    Log.d(TAG, "DocumentSnapshot data: " + task.getResult().getData()); 
    //Do the registration 
} else { 
    Log.d(TAG, "No such document"); 
} 

このTaskの結果はDocumentSnapshotです。基礎となる文書が実際に存在するかどうかは、exists()メソッドを介して利用できます。

ドキュメントが存在する場合は、その内容を取得するためにgetDataを呼び出すことができます。

db.collection("Companies").document(IDCOMPANIE1) 
    .get() 
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
     @Override 
     public void onComplete(@NonNull Task<QuerySnapshot> task) { 
      if (task.isSuccessful()) { 
       for (DocumentSnapshot document : task.getResult()) { 
        if(document.exists()) { 
         //Do something 
        } else { 
         //Do something else 
        } 

       } 
      } else { 
       Log.d(TAG, "Error getting documents: ", task.getException()); 
      } 
     } 
    }); 

あなたはtaskが空であるかどうかを知り、次のコード行を使用してくださいする場合:

boolean isEmpty = task.getResult().isEmpty(); 
+0

を、私はそれがどのようなデータを持っている場合、私はちょうどチェックexists.So収集スケジュールかどうかを確認する必要があります? @AlexMamo – TiagoIB

+0

はい、ちょうどtiのnullが表示されます。そうでない場合は、情報が含まれていることを意味します。 –

+0

はい、あなたはいつもその情報を持っています。コレクションのスケジュールを除いて。これはそうかもしれないし、そうでないかもしれない。それが存在するかどうかを確認する必要があります。 @AlexMamo – TiagoIB

関連する問題