Svi članci
Programeri·7 min čitanja

Korištenje baze podataka m77: kolekcije, filtri i podaci po korisniku

Svaka builder77 aplikacija dolazi s ugrađenom bazom podataka. Kako rade kolekcije, filtri, sortiranje i zapisi po korisniku — i kako privatne podatke zadržati privatnima.

77
Tim builder77
builder77.com

Većinu vremena nećeš izravno dirati bazu podataka — opišeš aplikaciju, a builder77 napiše kod koji sprema i čita podatke. No znati kako to radi pomaže ti pisati bolje promptove, brže otklanjati pogreške i donositi dobre odluke o privatnosti. Evo obilaska kroz m77.db.

Kolekcije i zapisi

Podaci žive u kolekcijama — imenovanim skupinama zapisa poput tasks, bookings ili posts. Nema sheme koju treba definirati: kolekcija nastaje kad u nju prvi put upišeš, a svaki zapis je običan objekt s poljima koja mu zadaš.

js
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }

builder77 automatski dodaje id, createdAt, updatedAt i ownerId. ownerId se postavlja na prijavljenog korisnika aplikacije kad postoji, što postaje važno za dozvole u nastavku.

Čitanje podataka: list, get i 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 traži točna podudaranja polja, što pokriva većinu potreba aplikacija: filtre po statusu, kategorije, ID nadređenog zapisa za povezane zapise. Za pretraživanje dok tipkaš kroz manji popis uobičajeno je učitati zapise i filtrirati ih u pregledniku.

Ažuriranje i brisanje

js
await m77.db.update('tasks', id, { done: true });   // shallow merge
await m77.db.remove('tasks', id);

update spaja polja koja proslijediš s postojećim zapisom, pa trebaš poslati samo ono što se promijenilo.

Podaci po korisniku uz mine: true

Za aplikacije u kojima svatko ima svoje podatke — dnevnike, budžete, praćenje navika — kombiniraj m77.auth s opcijom mine. Kad je korisnik prijavljen, mine: true vraća samo zapise koje je on stvorio.

js
await m77.auth.signIn({ email, password });

const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });

Ugrađen je i drugi sloj zaštite: zapis koji je stvorio prijavljeni korisnik može ažurirati ili izbrisati samo taj isti korisnik. Čak i ako netko ručno sastavi zahtjev, API odbija izmjene zapisa koji mu ne pripadaju.

Javni i privatni podaci: kratki vodič

  • Javni sadržaj (stavke jelovnika, blog članci, popisi proizvoda): za čitanje nije potrebna prijava. Zamoli builder77 da doda početne podatke ili administratorski zaslon za upravljanje njima i uređuj ih kad god želiš na kartici Podaci.
  • Prijave (obrasci za kontakt, popisi čekanja, rezervacije): bilo tko ih može stvoriti; ti ih čitaš na kartici Podaci.
  • Osobni podaci (bilješke, zdravstveni zapisi, financije): zahtijevaj prijavu i uvijek postavljaj upite s mine: true.

Jedno pravilo: sve u front-end kodu tvoje aplikacije vidljivo je posjetiteljima, a popise bez mine: true može pročitati svatko tko ima poveznicu na aplikaciju. Ako su podaci osobni, stavi ih iza prijave i mine. Ako je cijela aplikacija samo za tebe ili tvoj tim, uključi Privatna aplikacija u Postavkama.

Kartica Podaci

Kartica Podaci u alatu omogućuje ti pregled svih kolekcija, uređivanje ili brisanje zapisa, pregled korisnika aplikacije i prenesenih datoteka. To je najbrži način da ispraviš tipfeler u sadržaju, počistiš testne unose ili provjeriš sprema li obrazac ono što očekuješ.

Isti podaci iz Fluttera i drugih klijenata

Web SDK je tanki omotač oko REST API-ja, koji koriste i Flutter izvozi. To znači da bilo koji klijent može čitati i pisati iste kolekcije:

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)

Tokeni korisnika aplikacije ograničeni su na jedan projekt, pa se token jedne aplikacije ne može koristiti za drugu. Čitanja i pisanja u bazu podataka ne troše kredite — izgradi aplikaciju s onoliko podataka koliko želiš.

Promptovi za podatke

Sve ovo možeš usmjeravati običnim jezikom: „spremaj troškove s iznosom, kategorijom i datumom; svaki korisnik vidi samo svoje” ili „dodaj polje statusa rezervacijama i filtar za one na čekanju”. AI poznaje SDK, pa je opis podatkovnog modela obično sve što treba.

Spreman da to izgradiš?

Opiši svoju ideju i dobij prvu funkcionalnu verziju za otprilike minutu. Besplatan početak, kreditna kartica nije potrebna.