Claude-skill-registry firestore_patterns

Firebase Firestore NoSQL patterns, real-time sync ve security rules rehberi.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/firestore-patterns" ~/.claude/skills/majiayu000-claude-skill-registry-firestore-patterns && rm -rf "$T"
manifest: skills/data/firestore-patterns/SKILL.md
source content

🔥 Firestore Patterns

Firebase Firestore NoSQL patterns rehberi.


📋 Temel İşlemler

import { 
  collection, doc, getDoc, setDoc, 
  addDoc, updateDoc, deleteDoc, query, where 
} from 'firebase/firestore';

// Read
const docRef = doc(db, 'users', 'userId');
const docSnap = await getDoc(docRef);

// Create
await setDoc(doc(db, 'users', 'userId'), { name: 'John' });
await addDoc(collection(db, 'users'), { name: 'John' }); // Auto ID

// Update
await updateDoc(doc(db, 'users', 'userId'), { name: 'Jane' });

// Delete
await deleteDoc(doc(db, 'users', 'userId'));

🔄 Real-time Listeners

import { onSnapshot } from 'firebase/firestore';

const unsubscribe = onSnapshot(
  doc(db, 'users', 'userId'),
  (doc) => {
    console.log('Data:', doc.data());
  }
);

// Cleanup
unsubscribe();

🔍 Queries

const q = query(
  collection(db, 'users'),
  where('age', '>=', 18),
  where('status', '==', 'active'),
  orderBy('createdAt', 'desc'),
  limit(10)
);

const querySnapshot = await getDocs(q);

🔒 Security Rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read: if request.auth != null;
      allow write: if request.auth.uid == userId;
    }
  }
}

Firestore Patterns v1.1 - Enhanced

🔄 Workflow

Kaynak: Firebase Security Rules Guide

Aşama 1: Data Modeling

  • Access Patterns: Veriyi nasıl okuyacağına göre modelle (SQL gibi normalize etme).
  • Subcollections: 1MB döküman limitini aşmamak için alt koleksiyon kullan.
  • Denormalization: Okuma performansını artırmak için veriyi çoğaltmayı düşün.

Aşama 2: Security Implementation

  • Auth:
    request.auth != null
    kontrolünü her kurala ekle.
  • Validation: Gelen veriyi (type, length) security rules içinde doğrula.
  • Testing: Emulator kullanarak kuralları unit test ile sına.

Aşama 3: Optimization

  • Indexes: Karmaşık sorgular için composite index oluştur.
  • Offline: Mobil için offline persistence'ı aktif et.

Kontrol Noktaları

AşamaDoğrulama
1Bir dökümanı okumak için 100 başka döküman okumak gerekiyor mu? (Kötü)
2Herkesin yazabildiği (
allow write: if true
) bir yer kaldı mı? (Kritik)
3Sorgular index hatası veriyor mu?