5 Aralık 2016 Pazartesi

DatabaseReference Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.google.firebase.database.DatabaseReference;
Bu sınıf Query sınıfından kalıtır. Bu sınıf eski Firebase Sınıfı yerine geldi.

constructor
Bir tabloyu okumamızı sağlar. Önce veritabanına bağlanmak için şöyle yaparız.
DatabaseReference ref= FirebaseDatabase.getInstance().getReference();
Belli bir tabloyu okumak için şöyle yaparız.
//Get datasnapshot at your "users" root node
DatabaseReference ref = ref.child("users");
addChildEventListener metodu
Şöyle yaparız.
ChildEventListener childEventListener = new ChildEventListener() {
  @Override
  public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName){
    ...
  }

  @Override
  public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName){
    ..
  }

  @Override
  public void onChildRemoved(DataSnapshot dataSnapshot) {
    ...
  }

  @Override
  public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName){
    ...
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    ...
  }
};
ref.addChildEventListener(childEventListener);
ref nesnesi Movie veritabanı içinse onChildAdded'e gelen dataSnapshot Movie nesnelerini içerir. Eğer şöyle yaparsak her Movie nesnesinin string üyelerine erişiriz.
for (DataSnapshot ds : dataSnapshot.getChildren())
{
  ...
}
addListenerForSingleValueEvent metodu
Şöyle yaparız.
ref.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    //Get map of users in datasnapshot
    ...
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    //handle databaseError
  }
});
Örneğin Movie nesnesindeki bir alanın varlığını kontrol etmek için şöyle yaparız.
ref.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  void onDataChange(DataSnapshot snapshot) {
    if (snapshot.hasChild("name")) {
      // run some code
    }
  }
});
addValueEventListener metodu
Açıklaması şöyle
This method will be called anytime new data is added to our Firebase reference, and we don't need to write any extra code to make this happen.
Bir başka açıklama, her ne kadar eski Firebase Sınıfı için yazılmış olsa da aynı anlama geliyor ve şöyle
In the example above, the value event will fire once for the initial state of the data, and then again every time the value of that data changes.
city veritabanındaki nesnelere erişmek için şöyle yaparız.
ArrayList<String> cityList = new ArrayList<>();

ref.child("cities").addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    cityList.clear();
    for (DataSnapshot data : dataSnapshot.getChildren()){
      cityList.add(data.getKey);
    }

  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    Log.w(TAG, "getUser:onCancelled", databaseError.toException());
    // ...
  }
});
orderByKey metodu
Şöyle yaparız.
Query query = ref.orderByKey().startAt("...").endAt("...");
push metodu
Şöyle yaparız.
Movie m = new Movie();
...
ref.push().setValue (m);
setValue metodu
Açıklaması şöyle
Basic write operations
For basic write operations, you can use setValue() to save data to a specified reference, replacing any existing data at that path. You can use this method to:
Pass types that correspond to the available JSON types as follows:
  • String
  • Long
  • Double
  • Boolean
  • Map<String, Object>
  • List<Object>
  • Pass a custom Java object, if the class that defines it has a default constructor that takes no arguments and has public getters for the properties to be assigned.
Şöyle yaparız.
Foo foo = new Foo (...);

ref.push().setValue(foo);


Hiç yorum yok:

Yorum Gönder