MongoDB i ExpressJS – API do rejestracji i logowania – Część 3

Widać efekty!

W trzeciej części podłączymy bazę danych MongoDB. Skonfigurujemy naszą aplikację aby umiała się podłączyć do nowej bazy. Utworzymy prosty model użytkownika, dodamy API do tworzenia rejestracji oraz do logowania. Sporo pracy przed nami.

Do dzieła!

Pierwszym krokiem będzie aktualizacja pliku docker-compose.yml w celu dodania kontenera z MongoDB na pokładzie. Plik powinien wyglądać jak poniżej

Do komunikacji z Mongo wykorzystamy bibliotekę mongoose. W pliku package.json dopisujemy do dependencies

Plik app.ts zmieniamy tak aby góra wyglądała tak jak poniżej. W ten sposób będziemy mieli skonfigurowane połączenie z bazą danych.

Krótkie wyjaśnienie zmienne MONGO_PORT_27017_TCP_ADDR oraz MONGO_PORT_27017_TCP_PORT wystawia nam docker.

Więcej informacji tutaj

Przejdźmy do napisania trochę kodu!

W katalogu app tworzymy nowy katalog models a w nim plik user.ts który będzie przechowywał definicje naszego modelu użytkownika o następującej treści

Następnie przejdźmy do pliku routes/index.ts i zmieńmy jego treść na następującą

na tą chwilę będzie nam wyświetlał listę naszych użytkowników abyśmy łatwo mogli sprawdzić czy wszystko poszło OK.

Natomiast w pliku routes/users.ts umieścimy kod usługi do tworzenia naszego użytkownika, zastępujemy w całości jego zawartość

Od razu się wytłumaczę, że pomijam wszelkie szyfrowanie hasła dla większej przejrzystości.

Teraz po uruchomieniu naszej aplikacji możemy skorzystać już z nowo powstałego API, pokażę przykład przy wykorzystaniu curla w tym celu.

IP należy ustawić na taki pod jakim macie wystawionego docker’a. Dla użytkowników OS X pomocne może być polecenie docker-machine ip default gdzie default to nazwa maszyny. W razie problemów odsyłam do pierwszej części.

Aby sprawdzić czy wszystko poszło OK wywołujemy

Odpowiedź powinna wyglądać mniej więcej tak

Dodamy teraz API do logowania, co prawda bez obsługi sesji jednak pokazuje to mechanizm wyszukiwania danych w bazie.
W pliku routes/users.ts dodajemy przed export = router;

Teraz po wysłaniu zapytania do naszego API dowiemy się czy dany użytkownik istnieje czy też nie.

Powinno dać nam odpowiedź w postaci

to natomiast poinformuje nas o błędzie

a w odpowiedzi

Dobrnęliśmy do końca tej części, w kolejnej pobawimy się trochę frontendem i zmusimy Angulara aby zechciał obsłużyć nasze API.

GitHub

https://github.com/thehardway15/MEAN.TS