ไม่มีชื่อบทความ
ถ้าคุณมี 2 คอลเลกชันที่ต้องการอนุญาต ให้อ่าน/เขียนได้ เช่น projects กับ messages คุณสามารถระบุ match แยกแต่ละคอลเลกชันได้แบบนี้:
✅ ตัวอย่าง Firestore Rules สำหรับ 2 คอลเลกชัน:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// อนุญาตเฉพาะ collection 'projects'
match /projects/{projectId} {
allow read, write: if request.auth != null; // เฉพาะ user ที่ login
}
// อนุญาตเฉพาะ collection 'messages'
match /messages/{messageId} {
allow read, write: if request.auth != null; // เฉพาะ user ที่ login
}
}
}
✏️ อธิบายเพิ่มเติม:
match /projects/{projectId}: จับ document ใดก็ได้ในprojectscollectionmatch /messages/{messageId}: จับ document ใดก็ได้ในmessagescollectionrequest.auth != null: เงื่อนไขที่อนุญาตเฉพาะ user ที่ login ด้วย Firebase Auth
🔐 ตัวอย่างเพิ่มความปลอดภัย (เขียนได้เฉพาะเจ้าของ)
match /projects/{projectId} {
allow read: if request.auth != null;
allow write: if request.auth != null && request.auth.uid == resource.data.ownerId;
}
resource.data.ownerId: คือ field ใน document ที่เก็บว่าใครเป็นเจ้าของ- แบบนี้จะให้ใคร ๆ ก็อ่านได้ แต่แก้ไขได้เฉพาะเจ้าของ
ถ้าคุณมีโครงสร้างซับซ้อน เช่น users/{uid}/projects/{projectId} ก็บอกได้เลย จะช่วยเขียนแบบ nested ให้เหมาะกับ use case จ้ะ 😊