N

Nokfa Docs

Current: framework-next.js

ไม่มีชื่อบทความ

ถ้าคุณมี 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 ใดก็ได้ใน projects collection
  • match /messages/{messageId}: จับ document ใดก็ได้ใน messages collection
  • request.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 จ้ะ 😊