m77-tietokanta: kokoelmat, suodattimet ja käyttäjien data
Jokaisessa builder77-sovelluksessa on sisäänrakennettu tietokanta. Näin kokoelmat, suodattimet, lajittelu ja käyttäjäkohtaiset tietueet toimivat – ja näin pidät yksityiset tiedot yksityisinä.
Useimmiten et koske tietokantaan suoraan lainkaan – kuvailet sovelluksesi, ja builder77 kirjoittaa koodin, joka tallentaa ja lukee tiedot. Mutta kun tiedät, miten se toimii, kirjoitat parempia kehotteita, löydät virheet nopeammin ja teet hyviä päätöksiä yksityisyydestä. Tässä kierros m77.db:n läpi.
Kokoelmat ja tietueet
Tiedot tallennetaan kokoelmiin – nimetyissä tietueryhmissä kuten tasks, bookings tai posts. Skeemaa ei tarvitse määritellä: kokoelma luodaan, kun kirjoitat siihen ensimmäisen kerran, ja jokainen tietue on tavallinen objekti, jolla on ne kentät, jotka sille annat.
const task = await m77.db.create('tasks', { title: 'Write launch post', done: false });
// -> { id, title, done, createdAt, updatedAt, ownerId }builder77 lisää kentät id, createdAt, updatedAt ja ownerId automaattisesti. ownerId asetetaan kirjautuneeksi sovelluskäyttäjäksi, kun sellainen on, mikä on tärkeää alla käsiteltävien oikeuksien kannalta.
Tietojen lukeminen: 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 vertaa kenttiä täsmällisesti, mikä kattaa useimmat sovellusten tarpeet: tilasuodattimet, kategoriat, yläkohteen ID toisiinsa liittyville tietueille. Kirjoittaessa päivittyvää hakua varten on tavallista ladata kohtuullisen kokoinen lista ja suodattaa se selaimessa.
Päivittäminen ja poistaminen
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.remove('tasks', id);update yhdistää antamasi kentät olemassa olevaan tietueeseen, joten sinun tarvitsee lähettää vain muuttuneet tiedot.
Käyttäjäkohtainen data: mine: true
Sovelluksissa, joissa jokaisella on omat tietonsa – päiväkirjat, budjetit, tapaseurannat – yhdistä m77.auth ja mine-asetus. Kun käyttäjä on kirjautunut, mine: true palauttaa vain hänen luomansa tietueet.
await m77.auth.signIn({ email, password });
const myEntries = await m77.db.list('entries', { mine: true, sort: '-createdAt' });Mukana on myös toinen suojakerros: kirjautuneen käyttäjän luomaa tietuetta voi päivittää tai poistaa vain sama käyttäjä. Vaikka joku rakentaisi pyynnön käsin, rajapinta hylkää muokkaukset tietueisiin, jotka eivät ole hänen.
Julkinen vs. yksityinen data: pikaopas
- Julkinen sisältö (ruokalistan kohteet, blogikirjoitukset, tuotelistaukset): lukeminen ei vaadi kirjautumista. Pyydä builder77:ää lisäämään ne valmiiksi tai lisää hallintanäkymä niiden ylläpitoon, ja muokkaa niitä milloin tahansa Data-välilehdellä.
- Lähetykset (yhteydenottolomakkeet, odotuslistat, varaukset): kuka tahansa voi luoda niitä; sinä luet ne Data-välilehdellä.
- Henkilökohtainen data (muistiinpanot, terveyslokit, talous): vaadi kirjautuminen ja tee kyselyt aina
mine: true-asetuksella.
Nyrkkisääntö: kaikki sovelluksesi front-end-koodissa näkyy kävijöille, ja listat ilman mine: true -asetusta voi lukea kuka tahansa, jolla on sovelluksen linkki. Jos tiedot ovat henkilökohtaisia, laita ne kirjautumisen ja mine-asetuksen taakse. Jos koko sovellus on vain sinulle tai tiimillesi, ota Yksityinen sovellus käyttöön asetuksissa.
Data-välilehti
Editorin Data-välilehdellä voit selata jokaista kokoelmaa, muokata tai poistaa tietueita, nähdä sovelluksesi käyttäjät ja tarkastella ladattuja tiedostoja. Se on nopein tapa korjata kirjoitusvirhe sisällössä, siivota testimerkinnät tai tarkistaa, että lomake tallentaa sen, mitä odotat.
Samat tiedot Flutterista ja muista asiakasohjelmista
Web-SDK on ohut kääre REST-rajapinnan ympärillä, ja samaa rajapintaa käyttävät myös Flutter-viennit. Se tarkoittaa, että mikä tahansa asiakasohjelma voi lukea ja kirjoittaa samoja kokoelmia:
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)Sovelluskäyttäjien tunnisteet on rajattu yhteen projektiin, joten yhden sovelluksen tunnistetta ei voi käyttää toista vastaan. Tietokannan luku- ja kirjoitusoperaatiot eivät kuluta krediittejä – rakenna niin dataintensiivinen sovellus kuin haluat.
Kehotteet datasta
Voit ohjata kaikkea tätä tavallisella kielellä: ”tallenna kulut summalla, kategorialla ja päivämäärällä; jokainen käyttäjä näkee vain omansa” tai ”lisää varauksiin tila-kenttä ja suodatin odottaville”. Tekoäly tuntee SDK:n, joten tietomallin kuvaileminen riittää yleensä.