🔖 หมวดบทเรียน: การจัดการฐานข้อมูลแบบ NoSQL ในแอป Flutter
📌 เหมาะสำหรับ: ผู้ที่ต้องการจัดเก็บ แก้ไข ลบ และเรียกดูข้อมูลใน Firebase Cloud Firestore
🎯 เป้าหมาย: เข้าใจการใช้งาน Firestore ในการทำ CRUD (Create, Read, Update, Delete) แบบเรียลไทม์
🧭 เกริ่นนำ
Firebase Firestore เป็นฐานข้อมูลแบบ Cloud NoSQL ที่เก็บข้อมูลแบบ collection/document ซึ่งเหมาะกับแอปที่ต้องการเรียกดูข้อมูลแบบเรียลไทม์ ไม่จำเป็นต้องมี server ของตนเอง ในบทนี้เราจะสร้างระบบ CRUD แบบง่ายเพื่อฝึกการทำงานกับ Firestore
🔧 ติดตั้งแพ็กเกจ
dependencies:
cloud_firestore: ^4.15.0
📦 เริ่มต้นใช้งาน Firestore
import 'package:cloud_firestore/cloud_firestore.dart';
final db = FirebaseFirestore.instance;
✏️ CREATE – เพิ่มข้อมูลใหม่
await db.collection("notes").add({
'title': 'โน้ตแรก',
'content': 'เขียนโดยผู้ใช้ A',
'timestamp': FieldValue.serverTimestamp(),
});
📖 READ – อ่านข้อมูล
final snapshot = await db.collection("notes").get();
snapshot.docs.forEach((doc) => print(doc.data()));
🛠️ UPDATE – แก้ไขข้อมูล
await db.collection("notes").doc("doc_id").update({
'title': 'อัปเดตชื่อเรื่อง',
});
❌ DELETE – ลบข้อมูล
await db.collection("notes").doc("doc_id").delete();
🧪 ตัวอย่างแสดง ListView แบบเรียลไทม์
StreamBuilder<QuerySnapshot>(
stream: db.collection("notes").orderBy('timestamp').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
final docs = snapshot.data!.docs;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context, index) {
final note = docs[index].data() as Map<String, dynamic>;
return ListTile(
title: Text(note['title'] ?? ''),
subtitle: Text(note['content'] ?? ''),
);
},
);
},
)
✅ สรุป
- Firestore เป็น NoSQL DB ที่ใช้ง่ายและรองรับแบบเรียลไทม์
- ทำ CRUD ได้ผ่าน
collection().add()
,doc().update()
และdoc().delete()
- ใช้
StreamBuilder
เพื่อฟังข้อมูลแบบเรียลไทม์
บทถัดไปเราจะไปเรียนรู้การอัปโหลดและแสดงรูปภาพด้วย Firebase Storage ครับ