Databáza m77: kolekcie, filtre a dáta pre každého používateľa
Každá aplikácia v builder77 má vstavanú databázu. Ako fungujú kolekcie, filtre, triedenie a záznamy jednotlivých používateľov — a ako udržať súkromné dáta v súkromí.
Väčšinu času sa databázy priamo ani nedotkneš — opíšeš aplikáciu a builder77 napíše kód, ktorý dáta ukladá a číta. Keď však vieš, ako to funguje, píšeš lepšie zadania, rýchlejšie hľadáš chyby a robíš dobré rozhodnutia o súkromí. Tu je prehliadka m77.db.
Kolekcie a záznamy
Dáta sú uložené v kolekciách — pomenovaných skupinách záznamov ako tasks, bookings alebo posts. Nedefinuje sa žiadna schéma: kolekcia vznikne pri prvom zápise a každý záznam je obyčajný objekt s poliami, ktoré mu dáš.
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }builder77 automaticky pridá id, createdAt, updatedAt a ownerId. ownerId sa nastaví na prihláseného používateľa aplikácie, ak nejaký je, čo bude dôležité pri oprávneniach nižšie.
Čítanie dát: list, get a 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 porovnáva polia presne, čo pokryje väčšinu potrieb aplikácie: filtre podľa stavu, kategórie, ID nadradeného záznamu pri súvisiacich záznamoch. Pri vyhľadávaní počas písania v menšom zozname sa bežne načítajú záznamy a filtrujú sa v prehliadači.
Úpravy a mazanie
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.remove('tasks', id);update zlúči odovzdané polia s existujúcim záznamom, takže posielaš len to, čo sa zmenilo.
Dáta jednotlivých používateľov s mine: true
Pri aplikáciách, kde má každý svoje vlastné dáta — denníky, rozpočty, sledovanie návykov — skombinuj m77.auth s voľbou mine. Keď je používateľ prihlásený, mine: true vráti len záznamy, ktoré sám vytvoril.
await m77.auth.signIn({ email, password });
const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });Vstavaná je aj druhá vrstva ochrany: záznam vytvorený prihláseným používateľom môže upraviť alebo zmazať len ten istý používateľ. Aj keby niekto požiadavku zostavil ručne, API odmietne úpravy záznamov, ktoré mu nepatria.
Verejné vs. súkromné dáta: stručný sprievodca
- Verejný obsah (položky menu, články blogu, ponuka produktov): na čítanie netreba prihlásenie. Požiadaj builder77, aby ich predvyplnil, alebo pridal administračnú obrazovku na ich správu, a kedykoľvek ich uprav na karte Dáta.
- Odoslané formuláre (kontaktné formuláre, čakacie listiny, rezervácie): vytvoriť ich môže ktokoľvek; ty ich čítaš na karte Dáta.
- Osobné dáta (poznámky, zdravotné záznamy, financie): vyžaduj prihlásenie a vždy sa dopytuj s
mine: true.
Jedno pravidlo: všetko vo front-endovom kóde tvojej aplikácie vidia návštevníci a zoznamy bez mine: true môže čítať každý, kto má odkaz na aplikáciu. Ak sú dáta osobné, schovaj ich za prihlásenie a mine. Ak je celá aplikácia len pre teba alebo tvoj tím, zapni v Nastaveniach Súkromná aplikácia.
Karta Dáta
V editore ti karta Dáta umožní prechádzať všetky kolekcie, upravovať a mazať záznamy, vidieť používateľov aplikácie a kontrolovať nahrané súbory. Je to najrýchlejší spôsob, ako opraviť preklep v obsahu, upratať testovacie záznamy alebo overiť, že formulár ukladá to, čo čakáš.
Rovnaké dáta z Flutteru a iných klientov
Webové SDK je tenká vrstva nad REST API, ktoré používajú aj exporty do Flutteru. To znamená, že ľubovoľný klient môže čítať a zapisovať tie isté kolekcie:
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)Tokeny používateľov aplikácie platia len pre jeden projekt, takže token z jednej aplikácie sa nedá použiť v inej. Čítanie a zápisy do databázy nespotrebúvajú kredity — vytvor si aplikáciu takú náročnú na dáta, akú chceš.
Zadania o dátach
Toto všetko môžeš riadiť bežnou rečou: „ukladaj výdavky so sumou, kategóriou a dátumom; každý používateľ vidí len svoje“ alebo „pridaj k rezerváciám pole stavu a filter pre čakajúce“. AI pozná SDK, takže zvyčajne stačí opísať dátový model.