m77 veritabanını kullanmak: koleksiyonlar, filtreler ve kullanıcıya özel veriler
Her builder77 uygulaması yerleşik bir veritabanıyla gelir. Koleksiyonlar, filtreler, sıralama ve kullanıcıya özel kayıtlar nasıl çalışır — ve gizli veriler nasıl gizli kalır.
Çoğu zaman veritabanına doğrudan hiç dokunmazsın — uygulamanı anlatırsın, builder77 de veriyi saklayan ve okuyan kodu yazar. Ama nasıl çalıştığını bilmek daha iyi promptlar yazmana, daha hızlı hata ayıklamana ve gizlilik konusunda iyi kararlar vermene yardımcı olur. İşte m77.db turu.
Koleksiyonlar ve kayıtlar
Veriler koleksiyonlarda durur — tasks, bookings veya posts gibi adlandırılmış kayıt grupları. Tanımlanacak bir şema yok: bir koleksiyon, ona ilk kez veri yazdığında oluşur ve her kayıt, verdiğin alanları içeren düz bir nesnedir.
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }builder77 id, createdAt, updatedAt ve ownerId alanlarını otomatik ekler. ownerId, giriş yapmış bir uygulama kullanıcısı varsa ona ayarlanır; bu da aşağıdaki izinler için önem kazanır.
Veri okumak: list, get ve count
const open = await m77.db.list('tasks', {
where: { done: false }, // exact-match filter
sort: '-createdAt', // '-' = descending
limit: 50 // up to 500
});
const one = await m77.db.get('tasks', id); // record or null
const doneCount = await m77.db.count('tasks', { where: { done: true } });where alanları birebir eşleştirir; bu da uygulamaların ihtiyaçlarının çoğunu karşılar: durum filtreleri, kategoriler, ilişkili kayıtlar için bir üst kayıt ID'si. Orta büyüklükte bir listede yazarken anlık arama için kayıtları yükleyip tarayıcıda filtrelemek yaygın bir yöntemdir.
Güncellemek ve silmek
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.remove('tasks', id);update verdiğin alanları mevcut kayıtla birleştirir; yani yalnızca değişeni göndermen yeterli.
mine: true ile kullanıcıya özel veriler
Herkesin kendi verisinin olduğu uygulamalarda — günlükler, bütçeler, alışkanlık takibi — m77.auth'u mine seçeneğiyle birleştir. Bir kullanıcı giriş yaptığında mine: true yalnızca onun oluşturduğu kayıtları döndürür.
await m77.auth.signIn({ email, password });
const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });Yerleşik ikinci bir koruma katmanı daha var: giriş yapmış bir kullanıcının oluşturduğu bir kayıt yalnızca aynı kullanıcı tarafından güncellenebilir veya silinebilir. Biri elle bir istek hazırlasa bile API, sahibi olmadığı kayıtlardaki düzenlemeleri reddeder.
Herkese açık ve gizli veriler: kısa bir rehber
- Herkese açık içerik (menü öğeleri, blog yazıları, ürün listeleri): okumak için giriş gerekmez. builder77'den örnek veri eklemesini ya da yönetmek için bir yönetici ekranı eklemesini iste; Veriler sekmesinde istediğin zaman düzenle.
- Gönderimler (iletişim formları, bekleme listeleri, randevular): herkes oluşturabilir; sen bunları Veriler sekmesinde okursun.
- Kişisel veriler (notlar, sağlık kayıtları, finanslar): giriş zorunlu tut ve her zaman
mine: trueile sorgula.
Temel bir kural: uygulamanın ön yüz kodundaki her şey ziyaretçilere görünür ve mine: true olmadan yapılan listeler, uygulama bağlantısına sahip herkes tarafından okunabilir. Veri kişiselse onu girişin ve mine'ın arkasına koy. Uygulamanın tamamı yalnızca senin ya da ekibin içinse Ayarlar'dan Gizli uygulama'yı aç.
Veriler sekmesi
Oluşturucudaki Veriler sekmesi her koleksiyona göz atmanı, kayıtları düzenleyip silmeni, uygulama kullanıcılarını görmeni ve yüklenen dosyaları incelemeni sağlar. İçerikteki bir yazım hatasını düzeltmenin, test kayıtlarını temizlemenin veya bir formun beklediğin şeyi kaydedip kaydetmediğini kontrol etmenin en hızlı yolu.
Flutter'dan ve diğer istemcilerden aynı veriler
Web SDK'sı, Flutter dışa aktarımlarının da kullandığı bir REST API'nin üzerindeki ince bir katmandır. Bu da her istemcinin aynı koleksiyonları okuyup yazabileceği anlamına gelir:
GET /api/runtime/<projectId>/db/tasks?where={"done":false}&sort=-createdAt&limit=100
POST /api/runtime/<projectId>/db/tasks { "data": { "title": "Hi" } }
Authorization: Bearer <appUserToken> (optional, from /auth/signin)Uygulama kullanıcısı token'ları tek bir projeyle sınırlıdır; bir uygulamanın token'ı başka bir uygulamaya karşı kullanılamaz. Veritabanı okuma ve yazma işlemleri kredi harcamaz — istediğin kadar veri yoğun bir uygulama yap.
Veri için prompt yazmak
Bunların hepsini sade bir dille yönlendirebilirsin: “harcamaları tutar, kategori ve tarihle sakla; her kullanıcı yalnızca kendi harcamalarını görsün” ya da “randevulara bir durum alanı ve bekleyenler için bir filtre ekle”. Yapay zekâ SDK'yı bilir; genellikle veri modelini tarif etmen yeterlidir.