Mysql database med node.js

I dette forløb skal vi se på hvordan vi kan oprette forbindelse til en mySQL database med node.js. Fordelene er talrige i forhold til php, først og fremmest behøver vi ikke reloade sider, hver gang vi vil opdatere eller hente tupler i databasen.

Hent oplægget på github

Systemet

Vi vil bygge et lille generisk system, hvor man kan skrive et brugernavn – hvis brugernavnet ikke findes tilføjes det til database tabellen “users”. Det kan fx bruges til små uformelle systemer som chatrum eller små spil. Det kan selvfølgelig ikke bruges til systemer som kræver nogen som helst form for sikkerhed, da der ikke er anden validering end brugernavnet.

Teknologier

MySQL må være verdens mest udbredte – og gratis – databasesystem. Som de skriver på deres hjemmeside:

Many of the world’s largest and fastest-growing organizations including Facebook, Google, Adobe, Alcatel Lucent and Zappos rely on MySQL to save time and money powering their high-volume Web sites, business-critical systems and packaged software.

https://www.mysql.com/why-mysql/

Node.js er en javascript baseret webserver, som kan udvides næsten i det uendelige med package manageren NPM.

NPM Socket.io er en klient server baseret socket-model til node. Bruges til at lave lynhurtig interaktion mellem klienter og serveren.

NPM Express gør det nemt at sætte en server op med node. Styrer hvilken port der lyttes på og hvilke filer der “hostes”. Kan også udvides til at styre bl.a database funktionalitet.

NPM SQL giver adgang til at kommunikere med SQL databaser via node

Implementering

Databasen

Den database vi skal bruge er verdens enkleste; den indeholder blot én tabel, Users:

  • Users
    • id (int primary autoincrement)Users
    • username (varchar(255), not null)

Gå ind i phpMyadmin eller hvad du foretrækker og opret tabellen i en eller anden database. Hvis du allerede har en tabel der hedder “Users”, så kald den noget andet. Opret et første brugernavn manuelt, så vi kan hente det ud og se det fungerer.

Server.js

Server.js er det script der kører vores node server, og det er herfra vi kan kommunikere med databasen. Først skal vi sætte vores system op til at bruge de relevante pakker med NPM. Find en terminal frem naviger frem til mappen du har lagt oplægget i, og tast:

 npm install
npm install request --save
npm install socket.io --save
npm install express --save
npm install mysql --save

Det er ikke sikkert du behøver alle modulerne da nogle af dem muligvis allerede er dependencies i package.json. Men der sker ikke noget ved at være sikker i npm. Åbn nu server.js og sæt de rigtige værdier ind i konfigurationsvariablene. Start din server med

node server.js

Du skulle nu gerne få en consol besked i din shell, hvor du kan se, at brugernavnet hentes fra databasen. Prøv at logge hhv rows og fields for at få en fornemmelse af hvad der kommer tilbage. Som du måske kan se er det JSON, og det er per definition rart når vi arbejder med Javascript.

Opgave : implementer resten

Det spændende er nu om du kan lave et lille interface på klienten (sketch.js), hvor man kan indtaste sit brugernavn og få besked tilbage om hvorvidt det er gemt eller taget.

Den sql du skal bruge, kaldes et insert statement, fx:

INSERT INTO Users (username) VALUES ('simon')

Men det skal selvfølgelig først ske, når serveren modtager et brugernavn fra klienten. Dernæst skal serveren forsøge at hente det angivne brugernavn i databasen. Og hvis der ikke er nogen med det brugernavn i forvejen, får du 0 rows tilbage (rows.length == 0).

Leave a comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *