Bruk m77-databasen: samlinger, filtre og data per bruker
Alle builder77-apper leveres med en innebygd database. Slik fungerer samlinger, filtre, sortering og poster per bruker — og slik holder du private data private.
Som regel rører du aldri databasen direkte — du beskriver appen din, og builder77 skriver koden som lagrer og leser data. Men når du vet hvordan den fungerer, skriver du bedre prompter, feilsøker raskere og tar gode beslutninger om personvern. Her er en omvisning i m77.db.
Samlinger og poster
Data ligger i samlinger — navngitte grupper av poster som tasks, bookings eller posts. Det finnes ikke noe skjema å definere: en samling opprettes første gang du skriver til den, og hver post er et vanlig objekt med de feltene du gir den.
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }builder77 legger automatisk til id, createdAt, updatedAt og ownerId. ownerId settes til den innloggede appbrukeren når det finnes en, noe som blir viktig for tilgangene nedenfor.
Lese data: list, get og 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 sammenligner felt eksakt, noe som dekker de fleste behov i en app: statusfiltre, kategorier, en overordnet ID for relaterte poster. For søk mens man skriver i en moderat stor liste er det vanlig å laste inn postene og filtrere i nettleseren.
Oppdatere og slette
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.remove('tasks', id);update slår sammen feltene du sender med den eksisterende posten, så du trenger bare å sende det som er endret.
Data per bruker med mine: true
For apper der hver person har sine egne data — dagbøker, budsjetter, vanesporere — kombinerer du m77.auth med alternativet mine. Når en bruker er logget inn, returnerer mine: true bare postene vedkommende har opprettet.
await m77.auth.signIn({ email, password });
const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });Det finnes et ekstra beskyttelseslag innebygd: en post som er opprettet av en innlogget bruker, kan bare oppdateres eller slettes av den samme brukeren. Selv om noen lager en forespørsel for hånd, avviser API-et endringer i poster de ikke eier.
Offentlige vs. private data: en kjapp guide
- Offentlig innhold (menyretter, blogginnlegg, produktoppføringer): ingen innlogging trengs for å lese. Be builder77 legge dem inn fra start, eller legg til en adminskjerm for å administrere dem, og rediger dem når som helst i Data-fanen.
- Innsendinger (kontaktskjemaer, ventelister, bestillinger): hvem som helst kan opprette dem; du leser dem i Data-fanen.
- Personlige data (notater, helselogger, økonomi): krev innlogging og spør alltid med
mine: true.
En tommelfingerregel: alt i frontend-koden til appen din er synlig for besøkende, og lister uten mine: true kan leses av alle som har lenken til appen. Hvis dataene er personlige, legg dem bak innlogging og mine. Hvis hele appen bare er for deg eller teamet ditt, slå på Privat app under Innstillinger.
Data-fanen
I byggeren lar Data-fanen deg bla gjennom alle samlinger, redigere eller slette poster, se appbrukerne dine og gå gjennom opplastede filer. Det er den raskeste måten å rette en skrivefeil i innholdet, rydde bort testoppføringer eller sjekke at et skjema lagrer det du forventer.
Samme data fra Flutter og andre klienter
Nett-SDK-en er et tynt lag rundt et REST API, som også er det Flutter-eksporter bruker. Det betyr at enhver klient kan lese og skrive de samme samlingene:
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)Tokens for appbrukere er begrenset til ett enkelt prosjekt, så et token fra én app kan ikke brukes mot en annen. Lesing og skriving i databasen bruker ikke kreditter — bygg en så datatung app du vil.
Prompter om data
Du kan styre alt dette med vanlig språk: «lagre utgifter med beløp, kategori og dato; hver bruker ser bare sine egne» eller «legg til et statusfelt på bestillinger og et filter for de ventende». KI-en kjenner SDK-en, så det holder som regel å beskrive datamodellen.