Kako dodati bazu podataka u vašu aplikaciju (bez gubitka podataka kasnije)
Da biste dodali bazu podataka u svoju aplikaciju, odaberite upravljanu relacijsku bazu (Postgres je uobičajen izbor), čuvajte njen connection string u tajnoj vrijednosti na serveru, napravite jednu tabelu za svaku vrstu stvari koju aplikacija čuva i neka vaš backend, a ne preglednik, čita i piše u nju. Ako pravite aplikaciju pomoću AI alata za izradu aplikacija, obično je dovoljno reći "sačuvaj ovo u bazi podataka" i agent će postaviti tabele i kod; vaš posao je da jasno opišete podatke i provjerite da se stvarno čuvaju.
Ovaj vodič pokriva kada vam treba baza podataka, glavne opcije, kako opisati svoje podatke i greške koje uzrokuju gubitak ili curenje podataka.
Kada vaša aplikacija treba bazu podataka
Baza podataka vam treba kada aplikacija mora da zapamti nešto nakon što se stranica zatvori ili da podijeli podatke među ljudima. Tipični znakovi:
- Posjetioci šalju nešto: obrazac, prijavu, rezervaciju ili narudžbu
- Korisnici imaju račune sa sopstvenim sačuvanim sadržajem
- Administrator treba da vidi ili uredi ono što su drugi napravili
- Želite izvještaje ili brojanje kroz vrijeme
Ne treba vam za statičku stranicu na kojoj svi vide isti sadržaj, kao što su portfolio ili jednostavna landing stranica. Ako niste sigurni šta je zapravo baza podataka, prvo pročitajte šta je baza podataka.
Vaše opcije
| Opcija | Šta je to | Dobro za | Kompromisi |
|---|---|---|---|
| Ugrađena baza podataka iz vašeg alata za izradu | Baza koja je kreirana i povezana za vaš projekat | Većinu aplikacija napravljenih AI alatom za izradu | Vezana za hosting te platforme; izvoz i rezervne kopije zavise od platforme |
| Upravljani Postgres ili MySQL | Hostovana relacijska baza koju sami zasebno pokrećete | Aplikacije koje hostujete sami ili koje dijeli više servisa | Sami upravljate ključevima, ograničenjima konekcija i planovima |
| Backend-as-a-service | Baza plus autentikacija, skladište i API-ji u jednom proizvodu | Aplikacije s više frontenda koje žele gotovu prijavu | Više pojmova specifičnih za dobavljača za učenje |
| Dokument (NoSQL) baza | Čuva fleksibilne dokumente slične JSON-u | Vrlo nepravilni podaci | Veze i izvještavanje su teži |
| Tabela kao baza | Google Sheets ili slično preko API-ja | Mali interni alati, prototipovi | Sporo, nema pravih ograničenja, puca kod istovremenih izmjena |
Za većinu malih i srednjih web aplikacija, relacijska baza poput Postgresa je pravi izbor. Dobra je u vezama (klijent ima mnogo narudžbi), čuva dosljednost podataka i omogućava da kasnije postavljate pitanja pomoću SQL-a. Za objašnjenje Postgresa običnim jezikom pogledajte šta je Postgres.
Opišite podatke prije izrade
Najkorisnije što možete uraditi je da zapišete stvari koje aplikacija čuva i kako su povezane. Ne treba vam žargon baza podataka. Za aplikaciju za rezervacije:
- Klijenti: ime, email, telefon
- Usluge: naziv, trajanje, cijena
- Rezervacije: koji klijent, koja usluga, početak termina, status (na čekanju, potvrđeno, otkazano)
To su tri tabele. "Koji klijent" i "koja usluga" postaju veze (strani ključevi) među njima. Ispravno postaviti to rano važnije je od bilo kojeg izbora tehnologije, jer je promjena oblika podataka koji već imaju stvarne redove teža od promjene izgleda stranice.
Nekoliko pravila:
- Jedna tabela za svaku vrstu stvari. Nemojte trpati narudžbe u tekstualnu kolonu na klijentu.
- Svaki red neka ima ID i vrijeme kreiranja. Kasnije ćete ih trebati oboje.
- Koristite ispravne tipove. Datumi kao datumi, novac kao cijeli centi ili decimalni tip, a ne kao tekst.
- Označite obavezna polja kao obavezna. Neka baza odbija loše podatke, a ne samo forma.
Primjeri promptova
Počnite s jednom funkcijom istovremeno, a ne sa cijelom šemom odjednom:
Dodaj bazu podataka u ovu aplikaciju. Napravi tabelu rezervacija s imenom klijenta, emailom, uslugom, početkom termina i statusom (na čekanju, potvrđeno, otkazano; podrazumijevano na čekanju). Sačuvaj podneske iz forme za rezervaciju u nju, prikaži poruku o uspjehu i dodaj stranicu za administratora koja prikazuje rezervacije od najnovije ka najstarijoj.
Zatim je proširite:
Dodaj tabelu usluga (naziv, trajanje u minutama, cijena u centima). Zamijeni slobodno tekstualno polje za uslugu u rezervacijama vezom na usluge i prenesi postojeće rezervacije bez brisanja.
I zategnite:
Pobrini se da se sva čitanja i pisanja u bazu odvijaju na serveru. Pregledniku nikada ne smije stići connection string za bazu. Provjeri email i početak termina na serveru prije upisa.
Korak po korak
- Popišite svoje podatke kao gore: stvari, polja, veze među njima.
- Kreirajte bazu. U AI alatu za izradu, zatražite je u chatu. Drugdje, napravite upravljanu Postgres instancu i kopirajte njen connection string.
- Sačuvajte connection string kao tajnu vrijednost (varijablu okruženja na serveru), nikada u kodu. Pogledajte varijable okruženja i tajne.
- Kreirajte tabele. Koristite migracije, verzionisane skripte koje mijenjaju šemu, tako da su promjene ponovljive i mogu se poništiti.
- Napravite rute na serveru koje kreiraju, čitaju, ažuriraju i brišu redove (CRUD). Pregledničke rute pozivaju ove rute; nikada ne razgovaraju direktno s bazom.
- Povežite korisnički interfejs s tim rutama: forme koje čuvaju, liste koje se učitavaju, prazna stanja kada još nema podataka.
- Testirajte trajnost. Pošaljite nešto, osvježite stranicu, otvorite je u drugom pregledniku. Ako podaci nisu tu, nisu sačuvani u bazi.
- Provjerite pristup. Prijavite se kao drugi korisnik i potvrdite da ne možete vidjeti ili mijenjati podatke prvog korisnika.
- Objavite, pa ponovo testirajte na živoj adresi, jer objavljena aplikacija može koristiti drugačiju konekciju od vašeg pregleda.
Česte greške
- Čuvanje u pregledniku i vjerovanje da je sačuvano. localStorage izgleda kao da radi dok neko ne otvori aplikaciju na drugom uređaju. Uvijek testirajte u drugom pregledniku.
- Connection string u frontend kodu. Svako može pročitati frontend kod. To mu daje cijelu vašu bazu.
- Nema provjera pristupa. "Prikaži moje narudžbe" mora filtrirati po prijavljenom korisniku na serveru, a ne u korisničkom interfejsu. Ovo je najčešća sigurnosna rupa u aplikacijama pravljenim AI alatima; naša sigurnosna lista za aplikacije pravljene AI-jem to pokriva.
- Destruktivne promjene šeme. Zahtjev da "preimenuješ tabelu" ili "promijeni strukturu" može obrisati i ponovo kreirati tabelu. Kada postoje stvarni podaci, recite "prenesi postojeće redove, ništa ne briši".
- Čuvanje fajlova u bazi. Slike i PDF-ovi pripadaju skladištu fajlova, a u tabeli treba biti samo njihov URL ili ključ. Pogledajte kako dodati upload fajlova.
- Nema rezervnih kopija. Prije nego što imate klijente, znajte kako vaša platforma pravi sigurnosne kopije i kako ih vratiti.
Kontrolna lista
- Svaka vrsta stvari ima sopstvenu tabelu s ID-em i vremenom kreiranja
- Obavezna polja i tipovi su provjereni u bazi
- Connection string postoji samo u tajnim vrijednostima na serveru
- Sva čitanja i pisanja idu kroz rute na serveru
- Svaki korisnik može čitati i mijenjati samo svoje redove
- Podaci prežive osvježavanje i vidljivi su u drugom pregledniku
- Promjene šeme koriste migracije i čuvaju postojeće redove
- Znate kako rade rezervne kopije i vraćanje
- Živa aplikacija je testirana nakon objavljivanja
Dodavanje baze podataka u Mythex
Na Mythexu svaki projekat može dobiti sopstvenu namjensku Postgres bazu, i u planu Free i u Pro. Obično ne kliknete zasebno dugme za "priključivanje": zatražite u chatu ("sačuvaj emailove za listu čekanja u bazu") ili upišite /database, a podaci za povezivanje se ubacuju u radni prostor i u vašu objavljenu aplikaciju. Postavke projekta pokazuju je li baza aktivna.
Baza se uspava nakon 5 minuta neaktivnosti i budi se pri sljedećem zahtjevu. Objavljeno korištenje se naplaćuje za vrijeme dok je baza zaista bila budna, s istog kredit salda koji koristite za izradu. Ako dodate bazu nakon što ste već objavili aplikaciju, ponovo je objavite da bi živa aplikacija to preuzela.
Pogledajte Database i recept Build a CRUD app u dokumentaciji. Za stranu prijave kod podataka po korisniku, pročitajte kako dodati prijavu u aplikaciju.
Pitanja
Da li mi treba baza podataka za moju aplikaciju?
Treba vam čim aplikacija mora da zapamti nešto između posjeta ili da dijeli podatke između korisnika: prijave, narudžbe, rezervacije, objave ili postavke. Statička web stranica koja svima prikazuje isti sadržaj ne treba bazu.
Koju bazu podataka da koristim za malu web aplikaciju?
Relacijska baza kao što je Postgres siguran izbor za većinu malih web aplikacija. Dobro radi s korisnicima, narudžbama, vezama među podacima i izvještavanjem, široko je podržana, a u malim razmjerama rijetko ćete je prerasti.
Mogu li podatke čuvati u pregledniku umjesto u bazi?
Skladište u pregledniku, kao što je localStorage, živi samo na jednom uređaju, u jednom pregledniku, a korisnik ga može obrisati u bilo kojem trenutku. Dobro je za postavke kao što je izbor teme, ali ne za ništa što vi ili drugi korisnici kasnije trebate da vidite.
Da li Mythex uključuje bazu podataka?
Da. Mythex projekat može dobiti sopstvenu namjensku Postgres bazu podataka u planovima Free i Pro. Zatražite je u chatu ili koristite komandu /database, a podaci za povezivanje se ubacuju automatski. Korištenje se plaća s istog kredit salda kao i izrada aplikacije.