În prima parte a seriei tutorial, ați văzut cum să începeți să creați o aplicație web angulară. Ați învățat cum să configurați aplicația și să creați componenta de conectare.
În această parte a seriei, veți trece mai departe și veți scrie API-ul REST necesar pentru interacțiunea cu sfârșitul băncii MongoDB. De asemenea, veți crea Acasă componenta care va fi afișată după ce utilizatorul sa logat cu succes.
Noțiuni de bază
Să începem prin clonarea codului sursă din prima parte a seriei tutorial.
Odata ce ai Expres instalat, creați un fișier numit app.js. Acesta va fi fișierul rădăcină pentru serverul dvs. Node.js.
Iată cum app.js file looks:
const expres = solicita ('express') const app = express () app.get ('/ api / user / login'; asculta (3000, () => console.log ("server de blog care rulează pe portul 3000!"))
După cum vedeți în codul de mai sus, ați importat expres în app.js. Utilizarea expres, ați creat o aplicație aplicaţia.
Utilizarea aplicaţia, ați expus un punct final / Api / utilizator / autentificare care va afișa un mesaj. Porniți serverul Node.js utilizând următoarea comandă:
nod app.js
Punctați browser-ul dvs. la http: // localhost: 3000 / api / user / login și ar trebui să aveți afișat mesajul.
Vei face o POST solicitați de la serviciul Angular la server cu nume de utilizator și parola parametrii. Deci, trebuie să analizați parametrii solicitării.
Instalare corp-parser, care este Node.js middleware pentru parsarea parțială a parametrilor de solicitare.
Cele de mai sus două corp-parser opțiunile returnează middleware-ul care doar analizează JSON și urlencoded și examinează doar cererile în care Tipul de conținut header se potrivește cu tip opțiune.
Veți folosi Mangustă pentru a interacționa cu MongoDB de la Node.js. Așa că instalați Mangustă folosind Node Package Manager (npm).
npm instala mongoose - salveaza
Odată ce ați instalat mongoose, introduceți-l în app.js.
const mongoose = necesită ("mongoose");
Definiți adresa URL a bazei de date MongoDB în app.js.
const url = 'mongodb: // localhost / blogDb';
Să folosim Mangustă pentru a vă conecta la baza de date MongoDB. Iată cum arată:
app.post ('/ api / user / login', (req, res) => mongoose.connect (url, function (err) , req.body.username, 'parola este', req.body.password););)
Dacă conexiunea este stabilită, mesajul este înregistrat împreună cu nume de utilizator și parola.
Iată cum app.js file looks:
const expres = necesită ('expres') const corpParser = necesită ('body-parser') const mongoose = require ('mongoose'); const url = 'mongodb: // localhost / blogDb'; app.use (/ api / user / login, (req, res) => mongoose.connect (extended: false) url, funcția (err) if (err) throw err; console.log ('conectat cu succes, nume utilizator este', req.body.username, 'password is', req.body.password) .listen (3000, () => console.log ("server de blog care rulează pe portul 3000!"))
Pentru a vă conecta la serverul Nod din aplicația Angular, trebuie să setați proxy-ul. Creați un fișier numit proxy.json în interiorul client / src pliant. Iată cum arată:
Modificați clientul package.json fișier pentru a porni aplicația utilizând fișierul proxy.
"start": "ng servi --proxy-config proxy.json"
Salvați modificările și porniți serverul client.
npm start
Punctați browser-ul dvs. la http: // localhost: 4200 și introduceți numele de utilizator și parola. Faceți clic pe butonul de conectare și ar trebui să aveți parametrii înregistrați în consola Node.
Validarea conectării utilizatorului
Pentru a interacționa cu MongoDB folosind Mongoose, trebuie să definiți o schemă și să creați un model. În interiorul Server folder, creați un dosar numit model.
Creați un fișier numit user.js în interiorul model pliant. Adăugați următorul cod la user.js fişier:
După cum se vede în codul de mai sus, ați importat mongoose user.js. Ai creat o userSchema folosind mongoasa schemă și a creat Utilizator folosind modelul mangustă model.
Importați user.js fișier în interiorul app.js fişier.
const Utilizator = necesită ('./ model / user');
Înainte de interogarea MongoDB utilizator colecție, trebuie să creați colecția. Mergeți la shell-ul MongoDB tastând Mongo. Creați colecția utilizator utilizând următoarea comandă:
db.createCollection ( 'utilizator')
Introduceți o înregistrare pe care o veți interoga.
Acum, odată ce mongoose devine conectat la MongoDB, veți găsi înregistrarea din baza de date folosind nume de utilizator și parola a intrat. Iată cum arată API-ul:
Aprox. (> / api / user / login), (req, res) => mongoose.connect (url, useMongoClient: true, function (err) numele utilizatorului: req.body.username, parola: req.body.password, funcția (err, user) if (err) throw err; if (user.length === 1) retur res.status (200). json (status: 'succes', data: utilizator) altceva return res.status (200) .json (status: 'failed', mesaj: 'Login Failed')));
După cum se vede în codul de mai sus, odată ce primiți un răspuns din baza de date, returnați același lucru pe partea clientului.
Salvați modificările de mai sus și încercați să executați clientul și serverul. Introduceți numele de utilizator ca roy și parola ca 123 și ar trebui să puteți vedea rezultatul în consola browserului.
Redirecționarea către Componenta Acasă
Odată ce utilizatorul a fost validat cu succes, trebuie să redirecționați utilizatorul la Acasă componentă. Deci, haideți să începem prin a crea Acasă component.
Creați un dosar numit Acasă în interiorul src / app pliant. Creați un fișier numit home.component.html și adăugați următorul cod HTML:
Angular Blog App
Lorem ipsum
Lorem ipsum dolor stai în ordine, consecutiv, în timp ce se ascultă, în timp ce lucrați în timpul muncii și alături de magna aliqua. Ut enim ad minim veniam, quis ex exercitarea ullamco laboris nisi ut aliquip ex ea commodo consequat.
Citeste mai mult…
Subtitlu
Donec id elit non mi porta gravida la eget metus. Maecenas faucibus mollis interdum.
Subtitlu
Morbi leo risus, porta AC consectetur ac, vestibulum la eros. Cros mattis consectetur purus sit amet fermentum.
Subtitlu
Maecenas sed diam eget risus varius blandit sit amet non magna.
Subtitlu
Donec id elit non mi porta gravida la eget metus. Maecenas faucibus mollis interdum.
Subtitlu
Morbi leo risus, porta AC consectetur ac, vestibulum la eros. Cros mattis consectetur purus sit amet fermentum.
Subtitlu
Maecenas sed diam eget risus varius blandit sit amet non magna.
Creați un fișier numit home.component.css și adăugați următorul stil CSS:
.antet, .marketing, .footer padding-right: 1rem; padding-left: 1rem; / * Antetul paginii personalizate * / .header padding-bottom: 1rem; margine de fund: .05rem solid # e5e5e5; capul h3 margin-top: 0; marginea inferioară: 0; linia-înălțime: 3rem; / * Foaierul paginii personalizate * / .footer padding-top: 1.5rem; culoare: # 777; frontală de sus: .05rem solid # e5e5e5; / * Personalizați containerul * / @media (min-width: 48em) .container max-width: 46rem; .container-narrow> hr margine: 2rem 0; / * Mesajul de marketing principal și butonul de înscriere * / .jumbotron text-align: center; margine de fund: .05rem solid # e5e5e5; .jumbotron .btn padding: .75rem 1.5rem; font-size: 1.5rem; / * Susținerea conținutului de marketing * / .marketing margin: 3rem 0; .marketing p + h4 margin-top: 1.5rem; / * Responsiv: Tablouri portret și ecran sus * / @media și (min-lățime: 48em) / * Eliminați padding-ul pe care l-am setat mai devreme * / .header, .marketing, .footer padding-right: 0; padding-left: 0; / * Plasați spațiul din stânga * / .header margin-bottom: 2rem; .jumbotron margin-bottom: 0;
Creați fișierul component numit home.component.ts și adăugați următorul cod:
import Component de la '@ angular / core'; @Component (selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css']) clasa de export HomeComponent
După cum se vede în codul de mai sus, tocmai ați creat HomeComponent folosind @Component decorator și specificarea selector, templateUrl, și styleUrls.
Adaugă HomeComponent la NgModules în app.module.ts.
import BrowserModule din '@ unghiular / platform-browser'; import NgModule de la '@ angular / core'; import ROUTING din "./app.routing"; import FormsModule din '@ unghiular / formulare'; import HttpClientModule de la '@ angular / common / http'; import RootComponent din ".root/root.component"; import LoginComponent din './login/login.component'; import HomeComponent de la "./home/home.component"; @NgModule (declarații: [RootComponent, LoginComponent, HomeComponent], importurile: [BrowserModule, ROUTING, FormsModule, HttpClientModule], furnizori: [], bootstrap: [RootComponent])
Importați HomeComponent în app.routing.ts și definiți o rută pentru Acasă.
import RouterModule, Routes de la '@ unghiular / router'; import ModuleWithProviders de la '@ angular / core / src / metadata / ng_module'; import LoginComponent din './login/login.component'; import HomeComponent de la "./home/home.component"; Exemplu de constrângere pentru export: Routes = [path: ", component: LoginComponent, path: 'home', component: HomeComponent];
În validateLogin metodă în login.component.ts fișier, la validarea cu succes redirecționați utilizatorul la HomeComponent. Pentru a redirecționa, trebuie să importați unghiul Router.
import Router de la '@ unghiular / router';
Dacă răspunsul de la apelul API este un succes, veți naviga la HomeComponent folosind unghiul Router.
dacă (rezultat ['status'] === 'succes') this.router.navigate (['/ home']); altceva alert ("Parola de nume de utilizator greșită");
Iată cum login.component.ts file looks:
import Component de la '@ angular / core'; import LoginService de la "./login.service"; import User din "... /models/user.model"; import Router de la '@ unghiular / router'; @Component (selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'], furnizori: [LoginService]) clasa de export LoginComponent public utilizator: Utilizator; constructor (loginService privat: LoginService, router privat: Router) this.user = utilizator nou (); validateLogin () if (this.user.username && this.user.password) this.loginService.validateLogin (this.user) .subscribe (rezultat => console.log ('rezultat este', rezultat); (rezultatul ['status'] === 'succes') this.router.navigate (['/ home']); alt = alert ('Parola de nume de utilizator greșit');, error => console. log ('eroare este', eroare);); altceva alert ('introduceți numele de utilizator și parola');
Salvați modificările de mai sus și reporniți serverul. Conectați-vă la aplicație folosind numele de utilizator și parola existente și veți fi redirecționați către HomeComponent.
Înfășurați-o
În acest tutorial, ați văzut cum să scrieți sfârșitul API-ului REST pentru conectarea utilizatorului. Ai învățat cum să folosești Mangustă pentru a interacționa cu MongoDB din Nod. După validarea cu succes, ați văzut cum să utilizați Angular Router pentru navigarea la HomeComponent.
Cum a învățat experiența dvs. de a scrie o aplicație Angular și capătul său spate? Spuneți-ne gândurile și sugestiile în comentariile de mai jos.
Codul sursă din acest tutorial este disponibil pe GitHub.