m77 andmebaasi kasutamine: kogumikud, filtrid ja kasutajapõhised andmed
Iga builder77 rakendusega tuleb kaasa sisseehitatud andmebaas. Nii töötavad kogumikud, filtrid, sortimine ja kasutajapõhised kirjed — ja nii hoiad privaatsed andmed privaatsena.
Enamasti ei puutu sa andmebaasi otse üldse — kirjeldad oma rakendust ja builder77 kirjutab koodi, mis andmeid salvestab ja loeb. Aga kui tead, kuidas see töötab, kirjutad paremaid prompte, leiad vead kiiremini ja teed häid otsuseid privaatsuse kohta. Siin on ringkäik m77.db-s.
Kogumikud ja kirjed
Andmed asuvad kogumikes — nimega kirjerühmades nagu tasks, bookings või posts. Skeemi pole vaja määratleda: kogumik luuakse esimesel korral, kui sinna kirjutad, ja iga kirje on tavaline objekt nende väljadega, mille talle annad.
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }builder77 lisab automaatselt väljad id, createdAt, updatedAt ja ownerId. ownerId määratakse sisseloginud rakenduse kasutajaks, kui selline on, ja see muutub oluliseks allpool kirjeldatud õiguste puhul.
Andmete lugemine: list, get ja 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 võrdleb välju täpse vastena, mis katab enamiku rakenduste vajadused: olekufiltrid, kategooriad, seotud kirjete ülemkirje ID. Mõõduka suurusega loendis trükkimise ajal otsimiseks laaditakse kirjed tavaliselt alla ja filtreeritakse brauseris.
Uuendamine ja kustutamine
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.remove('tasks', id);update liidab sinu saadetud väljad olemasoleva kirjega, nii et pead saatma ainult selle, mis muutus.
Kasutajapõhised andmed: mine: true
Rakendustes, kus igal inimesel on oma andmed — päevikud, eelarved, harjumuste jälgijad —, kombineeri m77.auth valikuga mine. Kui kasutaja on sisse logitud, tagastab mine: true ainult tema loodud kirjed.
await m77.auth.signIn({ email, password });
const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });Sisse on ehitatud ka teine kaitsekiht: sisseloginud kasutaja loodud kirjet saab uuendada või kustutada ainult sama kasutaja. Isegi kui keegi koostab päringu käsitsi, lükkab API tagasi muudatused kirjetes, mis talle ei kuulu.
Avalikud vs. privaatsed andmed: kiirjuhend
- Avalik sisu (menüü road, blogipostitused, tooteloendid): lugemiseks pole sisselogimist vaja. Palu builder77-l need algandmetena lisada või lisa nende haldamiseks halduskraan ja muuda neid igal ajal vahekaardil Andmed.
- Esitused (kontaktivormid, ootenimekirjad, broneeringud): igaüks saab neid luua; sina loed neid vahekaardil Andmed.
- Isiklikud andmed (märkmed, terviselogid, rahaasjad): nõua sisselogimist ja tee päringud alati valikuga
mine: true.
Rusikareegel: kõik su rakenduse esiliidese koodis on külastajatele nähtav ja loendeid ilma mine: true valikuta saab lugeda igaüks, kellel on rakenduse link. Kui andmed on isiklikud, pane need sisselogimise ja mine taha. Kui kogu rakendus on ainult sinu või su meeskonna jaoks, lülita seadetes sisse Privaatne rakendus.
Vahekaart Andmed
Rakenduse loojas saad vahekaardil Andmed sirvida iga kogumikku, muuta või kustutada kirjeid, näha oma rakenduse kasutajaid ja vaadata üles laaditud faile. See on kiireim viis parandada sisus trükiviga, koristada testkirjeid või kontrollida, et vorm salvestab seda, mida ootad.
Samad andmed Flutterist ja teistest klientidest
Veebi-SDK on õhuke kiht REST API ümber, mida kasutavad ka Flutteri ekspordid. See tähendab, et iga klient saab lugeda ja kirjutada samu kogumikke:
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)Rakenduse kasutajate tokenid kehtivad ainult ühes projektis, nii et ühe rakenduse tokenit ei saa kasutada teise vastu. Andmebaasi lugemised ja kirjutamised ei kuluta krediite — ehita nii andmemahukas rakendus, kui soovid.
Promptid andmete kohta
Saad seda kõike suunata tavakeeles: „salvesta kulud summa, kategooria ja kuupäevaga; iga kasutaja näeb ainult enda omi“ või „lisa broneeringutele olekuväli ja filter ootel broneeringute jaoks“. Tehisintellekt tunneb SDK-d, nii et tavaliselt piisab andmemudeli kirjeldamisest.