Merhabalar! Bugünki yazımızda Firebase Firestore üzerinde Flutter ile nasıl UPDATE ve SET işlemlerinin yapılacağı üzerinde konuşacağız. 🙂

Bir önceki yazımız GET işlemi ile ilgili olmuştu. Buradan o yazıya ulaşabilirsiniz.

Öncelikle PUT işlemi ile başlayalım. Döküman referansı ile veritabanınız üzerinde istediğiniz koleksiyonun istediğiniz dökümanına veri girdisi yapabilirsiniz. Bunu yaparken dökümanın modeline uygun veri girdisi yapmanız önemli fakat gerekli değil. Yani bulunmayan bir alan için de veri girebilir ve o veriyi döküman içerisinde kaydedebilirsiniz.

Firebase SET işlemi yapmak

Firebase üzerinde Flutter uygulamalarında SET işlemi yapmak oldukça kolaydır. Set işlemi yani PUT işlemi yaparken yazacağımız kodda ekleyeceğimiz veri eğer Cloud Firestore kullanıyorsak Map biçiminde olmalıdır.

    var db = FirebaseFirestore.instance;
    db.collection('users').doc(id).set({
      'name': name,
    });

Örneğin yukarıdaki Firebase kod parçasında belirttiğimiz döküman id’sine bir name değişkeni yazılır. Bu name değişkeni name field’ında gösterilir. Bu veriyi okurken yani read işlemi yaparken de name olarak almamız gerekir.

Diyelim Firebase üzerinde bir veri modelinin set işlemini yapmanız gerekiyor. Bu durumda da tüm veriyi toMap fonksiyonu yazarak bu alan içerisine modelName.toMap() şeklinde yazarak ekleyebilirsiniz.

    db
        .collection('users')
        .doc(userId)
        .collection('transactions')
        .doc(transaction.id)
        .set(transaction.toMap());

Transaction modelimin yani sınıfımın içerisinde de toMap isimli, Map<String,dynamic> return eden bir fonksiyon var.

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'userName': userName,
      'oid': oid,
...
...
...
    };
  }

Firebase UPDATE yapmanın kısayolu

İsterseniz önce kısayoldan bahsedelim. Eğer field’ı belirli bir dosyanın verisini güncellemek istiyorsanız yalnızca şunu yapmanız yeterli:

    var db = FirebaseFirestore.instance;
    db.collection('users').doc(id).set({
      'name': name,
    }, SetOptions(merge: true));

SetOptions parametresini Firebase’e gönderdiğinizde içerisinde yer alan merge bilgisine göre field’ı update eder yani günceller. Merge: true diyerek ise varolan dosyanın üzerine veri yazmanızı engeller. Bir nevi sizin eklediğiniz yeni veri ile eski veriyi birleştirir.

Firebase UPDATE işlemi yapmak

Firebase’de daha önce Set edilen bir field’ı Update etmek çok kolaydır.

Future<void> updateUser() {
   FirebaseFirestore.instance.collection('users')
    .doc(id)
    .update({'name': 'Zahid'})
    .then((value) => print("Name Updated"))
    .catchError((error) => print("Failed to update name: $error"));
}

Hatta iç içe geçmiş yani nested verileri de update edebilirsiniz.

 FirebaseFirestore.instance.collection('users')
   .doc(id)
    .update({'user.address.zipcode': 06000})
    .then((value) => print("Zipcode Updated"))
    .catchError((error) => print("Failed to update Zipcode: $error"));


Firebase’de Flutter uygulamalarında Set ve Update işlemlerini yapmak çok kolay! Bundan sonraki son yazımda DELETE işleminden ve bazı READ kullanımını azaltma stratejilerinden bahsedeceğim. O zamana dek takipte kalın! 🙂


Okuyucuya Not

Merhaba okuyucu! Blogum son zamanlarda yüksek trafik almaya başladı ve bu durumdan memnunum fakat aynı zamanda siz ziyaretçileri tatmin edememekten endişeliyim. 🙂 Eğer yazılarım ile ilgili bir tavsiyeniz olursa mail adresimden bana ulaşabilir veya Twitter üzerinden direct message gönderebilirsiniz. Github’ta örnek olarak yaptığım projelere göz atmak isterseniz de bu linki kullanabilirsiniz. Umarım bu ziyaretinizle size bir şeyler katabilmişimdir.

Sağlıcakla kalın!