Innlogging via JSON Database
Når vi skal behandle større mengder data lagres disse ofte i Databaser, et format som er vanlig å bruke i programmering er JSON formatet. Det er en tekstfil med data hvor verdier får en nøkkel som inneholder eventuelt flere verdier, dette kalles for Nesting.
Opprett en databasefil
Lag en ny fil i prosjektmappen og kall denne for database.json
. Her må vi tenke oss frem til et design av vår database. I tilfellet med innlogging så kan vet vi at vi trenger følgende verdier:
- Liste over
users
- Hver
user
må ha en unik ID (brukernavn) og som regel minst ha følgende verdier:password
username
Vår .json
fil kan derfor bruke følgende tekst som mal:
Merk at man kan legge til flere verdier, separert med komma:
Importer i Javascript
For å importere filen er det mange måter å gjøre det på, den enkleste er å bruke require('./filnavn')
funksjonen, som vil returnere filens innhold. Merk at vi må bruke ./
for å definere at filen ligger i vår rotmappe. Vi kan navigere oss inn i databasen ved å spesifisere hvilken nøkkel vi vil ha:
Vi tar utgangspunkt i vår app.post('/auth')
funksjon vi lagde i forrige kapittel, men med noen endringer:
app.js
Koden vil nå:
- Laste inn databasefilen (Lese den)
- Definere brukernavnet utifra innloggingsforespørselen, lagres til
brukernavn
- Definere passordet utifra innloggingsforespørselen, lagres til
passord
- Forsøke å hente verdien til nøkkelen
"username"
, inne i nøkkelen:"users"
inne i brukernavnet - lagres tildb_brukernavn
- Forsøke å verdien til nøkkelen
"password"
inne i nøkkelen:"users"
inne i brukernavnet - lagres tildb_passord
- Sjekk om
brukernavn == db_brukernavn
ogpassord == db_passord
- Hvis ja, gjør X, hvis ikke, gjør Y
Tips
For å gjøre koden litt mindre, kan vi definere hvilken del av databasen vi vil ønsker. Denne koden vil gjøre det samme som den over, men med mindre kompleksitet ettersom vi starter fra en definert nøkkel:
Vår innlogging kan og gjøres enklere med samme metodikk:
app.js
Bruk funksjonen .toLowerCase()
bak sammenligningen av brukernavn for å unngå å måtte skille mellom store og små bokstaver.