Ugaoni 7 CRUD s Node.JS API -jem
U ovom ćemo članku stvoriti vrlo osnovnu aplikaciju Angular 7 CRUD (Stvaranje, čitanje, ažuriranje i brisanje) s Node.JS REST API krajnjim točkama. Uz pomoć našeg REST API -ja radit ćemo na našoj bazi podataka MongoDB i izvršavati razne operacije na prikupljanju proizvoda.
aol.com prijava putem e-pošte prijavite se na moj račun
Ugaoni 7 Preduvjeti
Prije nego počnete pisati aplikaciju Angular 7, provjerite imate li najnoviju verziju:
- Node.JS i NPM instalirani na vašem sustavu
- Angular 7 CLI instaliran na vašem sustavu
Pregled pozadine MongoDB -a
Dopustite mi da vam predstavim strukturu dokumenta MongoDB. U našoj bazi podataka imamo zbirku Proizvodi, a ta zbirka Proizvodi ima više dokumenata koji se odnose na različite proizvode.
Ovo je snimak zaslona naše kolekcije MongoDB proizvoda.
Ovo je snimak zaslona svakog dokumenta o proizvodu.
{ '_id': { '$oid': '5c3162ed7829481868c3afe9' }, 'title': 'HP', 'description': '15 inch HP Laptop', 'price': 1500, 'company': 'HP', 'createdAt': { '$date': '2019-01-06T02:07:41.477Z' }, 'updatedAt': { '$date': '2019-01-06T02:07:41.477Z' }, '__v': 0 }
Node.JS Ostale API završne točke
Sve detalje o API -ju Node.JS Rest možete dobiti na gornjoj poveznici koju sam podijelio na vrhu ovog posta. Dopustite mi da ponovno podijelim koje krajnje točke imamo za našu aplikaciju. Ovo je popis naših krajnjih točaka API -ja.
// Create a new Product app.post('/products', products.create); // Retrieve all Products app.get('/products', products.findAll); // Retrieve a single Product with productId app.get('/products/:productId', products.findOne); // Update a Note with productId app.put('/products/:productId', products.update); // Delete a Note with productId app.delete('/products/:productId', products.delete);
Izrada projekta Angular 7
Počnimo s našom aplikacijom Angular 7. Koristeći gornje Node.JS API krajnje točke, izvršit ćemo CRUD operaciju. Ovo će biti zaslon naše Angular aplikacije.
Izradite svoju kutnu aplikaciju pomoću naredbe ng new na vašem terminalu.
1. Stvaranje klase modela u Angular
Nakon izrade naše aplikacije, najprije stvorimo našu klasu modela proizvoda prema svojstvima dokumenta proizvoda naše baze podataka.
ProductModel.ts
export class ProductModel { _id: string; title: String; description: String; price: Number; company: String; }
2. Stvaranje usluge u Angular -u
Kreirajmo našu klasu Usluga proizvoda koja će komunicirati s našim Node.JS krajnjim točkama za sve operacije povezane s proizvodom.
product.service.ts
import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { ProductModel } from './ProductModel'; @Injectable({ providedIn: 'root' }) export class ProductService { constructor(private http: HttpClient) { } baseurl: string = 'http://localhost:3000/'; getAllProducts(){ return this.http.get(this.baseurl + 'Products'); } getProductById(id: string){ return this.http.get(this.baseurl + 'Products' + '/' + id); } addProduct(product: ProductModel){ return this.http.post(this.baseurl + 'Products', product); } deleteProduct(id: string){ return this.http.delete(this.baseurl + 'Products' + '/' + id); } updateProduct(product: ProductModel){ return this.http.put(this.baseurl + 'Products' + '/' + product._id, product); } }
Uvezli smo HttpClient i ProductModel u našu klasu usluga.
Ovo je krajnja točka naše usluge url.
baseurl: string = http: // localhost: 3000/;
U ovoj klasi imamo različite metode. Ovi su:
- Node.JS i NPM instalirani na vašem sustavu
- Angular 7 CLI instaliran na vašem sustavu
Uvezite uslugu proizvoda u app.module
Sada, nakon stvaranja usluge proizvoda, moramo to uvesti u našu datoteku app.module.ts. Učinimo to sada.
vue-galerija slika
app.module.ts
Dodajte ovaj redak na vrh datoteke app.module.ts.
baseurl: string = http: // localhost: 3000/;
I ovaj niz ProductService u Providers [] nizu.
baseurl: string = http: // localhost: 3000/; ## 3. Stvaranje komponente za ispis svih proizvodadodajte uređaj na netflix
Prije svega, dohvatit ćemo sve proizvode u našoj bazi podataka. Napravite komponentu lista proizvoda i dodajte je u naš modul usmjeravanja. Ova će komponenta dohvatiti sve proizvode iz baze podataka i prikazati je u tabličnom obliku. Dodajte pojedinosti usmjeravanja ove komponente u našu datoteku rute.
app-routing.module.ts
Uvezite ListProductsComponent u našu datoteku usmjeravanja.
baseurl: string = http: // localhost: 3000/;
I, dodajte ovo u rute konstantno.
baseurl: string = http: // localhost: 3000/;
Ovo je naša html datoteka s popisom proizvoda.
list-products.component.html
Add Product All Products
Title Description Price($) Company Action {{product.title}} {{product.description}} { currency : 'USD' : true} {{product.company}} Delete Edit
list-products.component.ts
import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { ProductModel } from '../ProductModel'; import { ProductService } from '../product.service'; @Component({ selector: 'app-list-products', templateUrl: './list-products.component.html', styleUrls: ['./list-products.component.css'] }) export class ListProductsComponent implements OnInit { products: ProductModel[]; constructor(private productService: ProductService, private router: Router) { } ngOnInit() { this.getAllProducts(); } getAllProducts(): void { this.productService.getAllProducts().subscribe(data=>{ this.products = data; }); }; addProduct(): void { this.router.navigate(['add-product']); } deleteProduct(product: ProductModel){ this.productService.deleteProduct(product._id).subscribe(data=>{ console.log(data); this.getAllProducts(); }); } updateProduct(product: ProductModel){ localStorage.removeItem('productId'); localStorage.setItem('productId', product._id); this.router.navigate(['edit-product']); } }
Da bismo dobili popis svih proizvoda, stvorili smo funkciju getAllProducts () i pozvali je u ngOnInit ().
4. Izrada komponente za dodavanje proizvoda
Ova će se komponenta koristiti za dodavanje proizvoda u našu bazu podataka. Dodajte pojedinosti usmjeravanja ove komponente u našu datoteku rute.
app-routing.module.ts
Dodajte ovaj redak na vrh datoteke app-routing.module.ts.
baseurl: string = http: // localhost: 3000/;
I, dodajte ovo u rute konstantno.
baseurl: string = http: // localhost: 3000/;
Ovo je naša datoteka komponenti dodatnog proizvoda.
add-product.component.html
Add Product
Title: Title is required Description: Description is required Price ($): Price is required Company: Company is required Save
add-product.component.ts
import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms'; import { ProductService } from '../product.service'; import { first } from 'rxjs/operators'; import { Router } from '@angular/router'; @Component({ selector: 'app-add-product', templateUrl: './add-product.component.html', styleUrls: ['./add-product.component.css'] }) export class AddProductComponent implements OnInit { constructor(private formBuilder: FormBuilder, private router: Router, private productService: ProductService) { } addForm: FormGroup; submitted = false; ngOnInit() { this.addForm = this.formBuilder.group({ _id: [], title: ['', Validators.required], description: ['', Validators.required], price: ['', Validators.required], company: ['', Validators.required] }); } onSubmit(){ this.submitted = true; if(this.addForm.valid){ this.productService.addProduct(this.addForm.value) .subscribe( data => { console.log(data); this.router.navigate(['']); }); } } // get the form short name to access the form fields get f() { return this.addForm.controls; } }
U ovoj klasi komponenti koristili smo Validators kako bismo provjerili jesu li sva obavezna polja ispunjena ili nisu. Kada korisnik klikne gumb Dodaj proizvod na stranici Popis proizvoda, korisnik će otići na stranicu Dodaj proizvod.
: Price is required Company: Company is required Update
Naša html datoteka za uređivanje komponente proizvoda slična je html datoteci komponente dodatka proizvoda. Dakle, ovdje možete jednostavno kopirati zalijepiti isti html.
edit-product.component.ts
import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms'; import { ProductService } from '../product.service'; import { first } from 'rxjs/operators'; import { Router } from '@angular/router'; import { ProductModel } from '../ProductModel'; @Component({ selector: 'app-edit-product', templateUrl: './edit-product.component.html', styleUrls: ['./edit-product.component.css'] }) export class EditProductComponent implements OnInit { product: ProductModel; editForm: FormGroup; submitted = false; constructor(private formBuilder: FormBuilder, private router: Router, private productService: ProductService) { } ngOnInit() { let productId = localStorage.getItem('productId'); if(!productId){ alert('Something wrong!'); this.router.navigate(['']); return; } this.editForm = this.formBuilder.group({ _id: [], title: ['', Validators.required], description: ['', Validators.required], price: ['', Validators.required], company: ['', Validators.required] }); this.productService.getProductById(productId).subscribe(data=>{ console.log(data); this.editForm.patchValue(data); //Don't use editForm.setValue() as it will throw console error }); } // get the form short name to access the form fields get f() { return this.editForm.controls; } onSubmit(){ this.submitted = true; if(this.editForm.valid){ this.productService.updateProduct(this.editForm.value) .subscribe( data => { console.log(data); this.router.navigate(['']); }); } } }
Ovdje koristimo localStorage.getItem () za dobivanje productId-a koji je pohranjen u našoj datoteci list-product.component.ts pomoću localStorage.setItem (). Dakle, prvo uzmimo productId iz localStorage () u metodi ngOnInit (). U nastavku pogledajte kako postavljamo productId u localStorage (). Nakon toga idemo na stranicu za uređivanje komponenti.
list-product.component.ts
updateProduct(product: ProductModel){ localStorage.removeItem('productId'); localStorage.setItem('productId', product._id); this.router.navigate(['edit-product']); }
Nakon što dohvatimo productId iz localStoragea, dobit ćemo proizvod pomoću ovog productId u funkciji ngOnInit ().
edit-product.component.ts
this.productService.getProductById(productId).subscribe(data=>{ console.log(data); this.editForm.patchValue(data); //Don't use editForm.setValue() as it will throw console error });
Uspješno, postavljamo vrijednosti obrasca s podacima odgovora pomoću metode patchValue ().

preuzimanje datoteka
Sve datoteke projekta možete preuzeti s GitHub -a.
Sažetak
Na ovom smo blogu naučili o tome kako izvesti CRUD operaciju na bazi MongoDB pomoću Node.Js Api. Također sam podijelio datoteke projekta na Githubu, odakle ih možete pregledati i preuzeti.
Autor: Adeš
#angular.js #node.js #mongodb
Vidi Također:
- Kako poslati e -poštu pomoću Gmail SMTP -a u Node.js
- Implementirajte Rustov tip rezultata u TypeScript sa samo 7 redaka koda
- Kako povezati Ruby on Rails API, PostgreSQL i Heroku
- Dodajte git oznake i određivanje verzija za označavanje implementacija u Azure DevOps Pipelines
- Proširenje nabrajanja u Javi