Ugaoni 7 CRUD s Node.JS API -jem

Isprobajte Naš Instrument Za Uklanjanje Problema

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 proizvoda

dodajte 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.

![](https://i1.wp.com/www.zeptobook.com/wp-content/uploads/2019/01/Add-Product.png'> http://localhost:3000/;
Add the route in routes constant.
baseurl: string = http://localhost:3000/; #### edit-product.component.html

 

Edit Product

Title: Title is required Description: Description is required Price ($): 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 ().

![](https://i2.wp.com/www.zeptobook.com/wp-content/uploads/2019/01/Edit-Product.png'> http://localhost:3000/; ## Importing the Bootstrap and FontAwesome

css font digitalnog sata

After installation, you can add these css files in your styles.css file.

/* You can add global styles to this file, and also import other style files */ @import '~bootstrap/dist/css/bootstrap.css'; @import '~font-awesome/css/font-awesome.css'; 

Ugaona 7 struktura projekta

Ovo će biti naša struktura aplikacije.

kako kupiti pundi x na binanceu

preuzimanje datoteka

Sve datoteke projekta možete preuzeti s GitHub -a.

Preuzmite projektne datoteke

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: