Uporaba baze podatkov m77: zbirke, filtri in podatki uporabnikov
Vsaka aplikacija builder77 ima vgrajeno bazo podatkov. Kako delujejo zbirke, filtri, razvrščanje in zapisi po uporabnikih – in kako zasebne podatke ohraniti zasebne.
Večinoma se baze podatkov sploh ne boš neposredno dotaknil – opišeš aplikacijo, builder77 pa napiše kodo, ki shranjuje in bere podatke. A če veš, kako deluje, boš pisal boljše prompte, hitreje odpravljal napake in sprejemal dobre odločitve o zasebnosti. Tukaj je pregled m77.db.
Zbirke in zapisi
Podatki živijo v zbirkah – poimenovanih skupinah zapisov, kot so tasks, bookings ali posts. Sheme ni treba določati: zbirka nastane, ko vanjo prvič zapišeš, vsak zapis pa je navaden objekt s polji, ki mu jih podaš.
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }builder77 samodejno doda id, createdAt, updatedAt in ownerId. ownerId se nastavi na prijavljenega uporabnika aplikacije, kadar ta obstaja, kar postane pomembno pri dovoljenjih spodaj.
Branje podatkov: list, get in 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 išče natančna ujemanja polj, kar pokrije večino potreb aplikacij: filtre po statusu, kategorije, ID nadrejenega zapisa za povezane zapise. Za iskanje med tipkanjem po manjšem seznamu je običajno, da zapise naložiš in jih filtriraš v brskalniku.
Posodabljanje in brisanje
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.remove('tasks', id);update združi polja, ki jih podaš, z obstoječim zapisom, zato moraš poslati le tisto, kar se je spremenilo.
Podatki po uporabnikih z mine: true
Za aplikacije, kjer ima vsak svoje podatke – dnevnike, proračune, sledilnike navad – združi m77.auth z možnostjo mine. Ko je uporabnik prijavljen, mine: true vrne le zapise, ki jih je ustvaril on.
await m77.auth.signIn({ email, password });
const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });Vgrajena je še druga plast zaščite: zapis, ki ga je ustvaril prijavljen uporabnik, lahko posodobi ali izbriše samo ta isti uporabnik. Tudi če nekdo ročno sestavi zahtevo, API zavrne urejanje zapisov, ki niso njegovi.
Javni in zasebni podatki: kratek vodič
- Javna vsebina (jedi na meniju, objave na blogu, seznami izdelkov): za branje prijava ni potrebna. Prosi builder77, naj doda začetne podatke ali skrbniški zaslon za upravljanje, in jih kadar koli urejaj v zavihku Podatki.
- Oddaje (kontaktni obrazci, čakalni seznami, rezervacije): ustvari jih lahko kdor koli; ti jih bereš v zavihku Podatki.
- Osebni podatki (zapiski, zdravstveni dnevniki, finance): zahtevaj prijavo in vedno poizveduj z
mine: true.
Eno pravilo: vse v sprednji kodi tvoje aplikacije je vidno obiskovalcem, sezname brez mine: true pa lahko prebere vsak, ki ima povezavo do aplikacije. Če so podatki osebni, jih skrij za prijavo in mine. Če je celotna aplikacija samo zate ali tvojo ekipo, v Nastavitvah vklopi Zasebna aplikacija.
Zavihek Podatki
Zavihek Podatki v graditelju ti omogoča brskanje po vseh zbirkah, urejanje ali brisanje zapisov, pregled uporabnikov aplikacije in naloženih datotek. Je najhitrejši način, da popraviš tipkarsko napako v vsebini, počistiš testne vnose ali preveriš, ali obrazec shranjuje to, kar pričakuješ.
Isti podatki iz Flutterja in drugih odjemalcev
Spletni SDK je tanek ovoj okoli REST API-ja, ki ga uporabljajo tudi izvozi Flutter. To pomeni, da lahko kateri koli odjemalec bere in piše iste zbirke:
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)Žetoni uporabnikov aplikacije so omejeni na en projekt, zato žetona ene aplikacije ni mogoče uporabiti za drugo. Branje in pisanje v bazo podatkov ne porablja kreditov – zgradi aplikacijo s toliko podatki, kot želiš.
Prompti za podatke
Vse to lahko usmerjaš z navadnim jezikom: »shranjuj stroške z zneskom, kategorijo in datumom; vsak uporabnik vidi samo svoje« ali »rezervacijam dodaj polje za status in filter za tiste na čakanju«. AI pozna SDK, zato običajno zadostuje, da opišeš podatkovni model.