Firestore中等效的addValueEventListener

时间:2019-03-29 07:40:38

标签: android firebase firebase-realtime-database google-cloud-firestore

我正在尝试从Android应用程序中的Firebase提取特定数据。 输入代码


    DatabaseReference Ref = FirebaseDatabase.getInstance().getReference().child("Working").child(FoundID).child("l");
    Ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

                               }

        }

//

但是当使用firestore时,它是拒绝addValueEventListener 如何在Firestore中执行之前的代码而不是Firebase

1 个答案:

答案 0 :(得分:1)

Firestore与实时数据库不同,您应在此处阅读文档:

https://firebase.google.com/docs/firestore/quickstart

但是与addValueEventListener等效的是get()

从文档中

  

public Task<DocumentSnapshot> get ()

     

读取此DocumentReference引用的文档。

您可以检索某个集合中的所有文档,例如:

db.collection("Working")
    .get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    Log.d(TAG, document.getId() + " => " + document.getData());
                }
            } else {
                Log.d(TAG, "Error getting documents: ", task.getException());
            }
        }
    });

要能够使用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;
    }

    if (snapshot != null && snapshot.exists()) {
        Log.d(TAG, "Current data: " + snapshot.getData());
    } else {
        Log.d(TAG, "Current data: null");
     }
   }
});

更多信息在这里:

https://firebase.google.com/docs/firestore/query-data/listen