Kõik postitused
Arendajad·7 min lugemist

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.

77
builder77 meeskond
builder77.com

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.

js
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

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

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

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

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)

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.

Valmis seda ehitama?

Kirjelda oma ideed ja saa töötav esimene versioon umbes minutiga. Alustamine on tasuta, krediitkaarti pole vaja.