CodeBlanks Logo Icon CodeBlanks

Veri ekleme

collection().add ile belge eklemeyi öğrenirsin.

Veri ekleme

collection().add({...}) ile bir koleksiyona yeni belge eklersin. add otomatik bir belge kimliği üretir ve asenkron bir DocumentReference döndürür. Belge verisi bir Map<String, dynamic> olarak verilir.

final ref = await db.collection('messages').add({
  'text': 'Merhaba',
  'sender': 'Ali',
});
print(ref.id);

doc().set ile kimlikli belge

Otomatik kimlik yerine kendi kimliğini vermek istersen doc('id').set({...}) kullanırsın. Bu yöntem, belge varsa üzerine yazar, yoksa oluşturur. add yeni belge için, set ise belirli bir kimlikle yazmak için uygundur.

await db.collection('users').doc('u1').set({
  'name': 'Ali',
});

Uygulama Belge ekle ve kimliği yazdır

Db al. 'messages' koleksiyonuna {'text': 'Merhaba'} verisiyle belge ekle. Dönen referansın id değerini yazdır.

Başlangıç kodu

main.dart
class DocumentReference {
  final String id;
  DocumentReference(this.id);
}

class CollectionReference {
  final String name;
  final List<Map<String, dynamic>> _store;
  CollectionReference(this.name, this._store);

  Future<DocumentReference> add(Map<String, dynamic> data) async {
    final id = 'auto-${_store.length + 1}';
    _store.add(data);
    return DocumentReference(id);
  }
}

class FirebaseFirestore {
  static final FirebaseFirestore instance = FirebaseFirestore._();
  FirebaseFirestore._();
  final Map<String, List<Map<String, dynamic>>> _db = {};

  CollectionReference collection(String name) {
    _db.putIfAbsent(name, () => []);
    return CollectionReference(name, _db[name]!);
  }
}

void main() async {
  // belge ekle, id yazdır
}

Örnek çözüm

main.dart
class DocumentReference {
  final String id;
  DocumentReference(this.id);
}

class CollectionReference {
  final String name;
  final List<Map<String, dynamic>> _store;
  CollectionReference(this.name, this._store);

  Future<DocumentReference> add(Map<String, dynamic> data) async {
    final id = 'auto-${_store.length + 1}';
    _store.add(data);
    return DocumentReference(id);
  }
}

class FirebaseFirestore {
  static final FirebaseFirestore instance = FirebaseFirestore._();
  FirebaseFirestore._();
  final Map<String, List<Map<String, dynamic>>> _db = {};

  CollectionReference collection(String name) {
    _db.putIfAbsent(name, () => []);
    return CollectionReference(name, _db[name]!);
  }
}

void main() async {
  final db = FirebaseFirestore.instance;
  final ref = await db.collection('messages').add({
    'text': 'Merhaba',
  });
  print(ref.id);
}

Beklenen çıktı

auto-1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 collection().add metodu ne döndürür?

  • Boş bir Future
  • Yalnızca bir hata kodu
  • Bir int sayı
  • DocumentReference Doğru cevap

Açıklama: add metodu, otomatik kimlikli yeni belgeye referans olarak DocumentReference döndürür.

2 Belge ekle

Soru
final ref = await db.collection('messages').____({
  'text': 'Merhaba',
});
Cevap
final ref = await db.collection('messages').add({
  'text': 'Merhaba',
});

Açıklama: Koleksiyona yeni belge eklemek için add metodu kullanılır; veri Map olarak verilir.

3 Veri ekleme parçaları

Kavram Anlamı
add Otomatik kimlikli belge
doc('u1').set Belirli kimlikli belge
Map<String, dynamic> Belge verisi
DocumentReference Ekleme sonucu

İleri seviye bölümündeki tüm dersler