Vsi članki
Razvijalci·7 min branja

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.

77
Ekipa builder77
builder77.com

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š.

js
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

js
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

js
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.

js
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:

http
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.

Pripravljen, da jo zgradiš?

Opiši svojo idejo in v približno minuti dobi prvo delujočo različico. Brezplačen začetek, kreditna kartica ni potrebna.