L-artikli kollha
Żviluppaturi·7 min qari

L-użu tad-database m77: kollezzjonijiet, filtri u dejta għal kull utent

Kull app ta' builder77 tiġi b'database integrata. Hawn kif jaħdmu l-kollezzjonijiet, il-filtri, l-issortjar u r-records għal kull utent — u kif iżżomm id-dejta privata privata.

77
It-tim ta' builder77
builder77.com

Il-biċċa l-kbira tal-ħin qatt mhu se tmiss id-database direttament — tiddeskrivi l-app tiegħek, u builder77 jikteb il-kodiċi li jaħżen u jaqra d-dejta. Imma meta tkun taf kif taħdem, tikteb prompts aħjar, issib l-iżbalji aktar malajr u tieħu deċiżjonijiet tajbin dwar il-privatezza. Hawn tour ta' m77.db.

Kollezzjonijiet u records

Id-dejta tgħix f'kollezzjonijiet — gruppi ta' records b'isem bħal tasks, bookings jew posts. M'hemmx schema x'tiddefinixxi: kollezzjoni tinħoloq l-ewwel darba li tikteb fiha, u kull record hu oġġett sempliċi b'kwalunkwe oqsma li tagħtih.

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

builder77 iżid id, createdAt, updatedAt u ownerId awtomatikament. ownerId jiġi ssettjat għall-utent tal-app li jkun għamel login meta jkun hemm wieħed, u dan isir importanti għall-permessi hawn taħt.

Qari tad-dejta: list, get u 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 iqabbel l-oqsma eżatt, u dan ikopri l-biċċa l-kbira tal-bżonnijiet ta' app: filtri tal-istatus, kategoriji, ID tal-ġenitur għal records relatati. Għal tfittxija waqt li tittajpja f'lista mhux kbira, hu komuni li ttella' r-records u tiffiltrahom fil-browser.

Aġġornament u tħassir

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

update jgħaqqad l-oqsma li tgħaddi mar-record eżistenti, għalhekk trid tibgħat biss dak li nbidel.

Dejta għal kull utent b'mine: true

Għal apps fejn kull persuna għandha d-dejta tagħha — djarji, baġits, habit trackers — għaqqad m77.auth mal-għażla mine. Meta utent ikun għamel login, mine: true jagħti lura biss ir-records li ħoloq hu.

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

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

Hemm ukoll it-tieni saff ta' protezzjoni integrat: record maħluq minn utent li għamel login jista' jiġi aġġornat jew imħassar biss minn dak l-istess utent. Anki jekk xi ħadd jibni talba bl-idejn, l-API jirrifjuta l-bidliet f'records li mhumiex tiegħu.

Dejta pubblika u privata: gwida qasira

  • Kontenut pubbliku (oġġetti tal-menu, posts tal-blog, listi tal-prodotti): m'hemmx bżonn login biex jinqraw. Itlob lil builder77 iżid dejta tal-bidu, jew iżid skrin tal-admin biex timmaniġġjahom, u editjahom meta trid fit-tab Data.
  • Sottomissjonijiet (formoli tal-kuntatt, waitlists, bookings): kulħadd jista' joħloqhom; int taqrahom fit-tab Data.
  • Dejta personali (noti, reġistri tas-saħħa, finanzi): itlob login u dejjem agħmel il-query b'mine: true.

Regola waħda: kull ħaġa fil-kodiċi front-end tal-app tiegħek tidher lill-viżitaturi, u listi mingħajr mine: true jistgħu jinqraw minn kull min għandu l-link tal-app. Jekk id-dejta hi personali, poġġiha wara l-login u mine. Jekk l-app kollha hi għalik jew għat-tim tiegħek biss, ixgħel App privata fl-Issettjar.

It-tab Data

Fil-builder, it-tab Data jħallik tara kull kollezzjoni, teditja jew tħassar records, tara l-utenti tal-app tiegħek u tirrevedi l-fajls imtellgħin. Hu l-aktar mod mgħaġġel biex tirranġa żball tal-ittajpjar fil-kontenut, tnaddaf entrati tat-test, jew tiċċekkja li formola qed tissejvja dak li tistenna.

L-istess dejta minn Flutter u klijenti oħra

Il-web SDK hu saff irqiq madwar REST API, li hu wkoll dak li jużaw l-esportazzjonijiet ta' Flutter. Dan ifisser li kwalunkwe klijent jista' jaqra u jikteb l-istess kollezzjonijiet:

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)

It-tokens tal-utenti tal-app huma limitati għal proġett wieħed, għalhekk token minn app waħda ma jistax jintuża kontra oħra. Il-qari u l-kitba fid-database ma jużawx krediti — ibni app b'kemm trid dejta.

Prompts għad-dejta

Tista' tmexxi dan kollu b'lingwaġġ sempliċi: “aħżen l-ispejjeż bl-ammont, il-kategorija u d-data; kull utent jara tiegħu biss”, jew “żid qasam tal-istatus mal-bookings u filtru għal dawk pendenti”. L-AI jaf l-SDK, għalhekk ġeneralment biżżejjed tiddeskrivi l-mudell tad-dejta.

Lest biex tibnih?

Iddeskrivi l-idea tiegħek u ikseb l-ewwel verżjoni li taħdem f'madwar minuta. Ibda b'xejn, bla bżonn ta' karta tal-kreditu.