2017-10-11 5 views
0

Firestoreドキュメントに対してChildEventListenerを実装する方法はありません(フィールドがドキュメントに追加/削除されたときに、追加/削除されたフィールドのスナップショットのみを取得するリスナを起動する必要があります)。 Firebase Realtime DBに似たOnChildAdded、OnChildChanged、OnChildDeletedの機能が必要です。Firestore文書の子イベントリスナーと複数のユーザーが一度に文書に書き込む?

また、複数のユーザーが1つのFirestoreドキュメントを一度に矛盾なく操作する方法はありますか? (例えば、ユーザ1、ユーザ2、およびユーザ3は、同時に同じ文書に名前を追加する)。 Androidでこれを実装することはできますか?

答えて

0

Cloud Firestoreでは、ドキュメントのフィールドは、リアルタイムデータベースパスを扱うときと同じように、ドキュメントの「子」とはみなされないため、正確に行う方法はありません。

あなたはしかし、文書上のリアルタイムの変化に耳を傾け、そして変更をフィールドを見つけるために自分自身を差分の実装できます。

final DocumentReference docRef = db.collection("cities").document("SF"); 
docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() { 
    @Override 
    public void onEvent(@Nullable DocumentSnapshot snapshot, 
         @Nullable FirebaseFirestoreException e) { 
     if (e != null) { 
      Log.w(TAG, "Listen failed.", e); 
      return; 
     } 

     // ... calculate which fields changed ... 
    } 

}); 
+0

私はそれを認識しています。私は、子リスナを実装する簡単な方法を知りたかったのです。また、同時に複数の人が文書にデータを書き込む方法はありますか?紛争はありませんか? – Thanatos

+0

いいえ、Android SDKのドキュメントのフィールドに子イベントリスナーを実装する方法はありません> –

+0

競合については、Firestoreは「最後の書き込み勝ち」モデルを使用します。データの整合性を確保したい場合は、トランザクションを使用できます。 –

関連する問題