Veri ekleme
- Flutter kursu
- İleri seviye
- Ders 22/69
- 4 dk
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
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
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
final ref = await db.collection('messages').____({
'text': 'Merhaba',
});
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 |