Validacija podataka u NestJS-u korišćenjem „Pipe“

Uvodu u Nest.js „Pipe“ Pipes u NestJS-u su specijalne komponente koje se koriste za transformaciju i validaciju podataka pre nego što stignu do kontrolera ili metoda kontrolera. Pipes su korisni kada želimo da osiguramo da podaci koje primamo u API zahtevima ispunjavaju određene uslove ili da se na specifičan način transformišu. Nest.js dolazi sa ugrađenim … Read more

Uvod u Nest.js

Šta je Nest.js? Nest.js je Node.js framework za izradu server-side aplikacija. Koristi modularnu arhitekturu što podrazumeva da se aplikacija deli na module, gde svaki modul grupiše povezane funkcionalnost, tako da se lako mogu dodati nove funkcionalnosti bez narušavanja postojećih delova aplikacije. Nest.js korisi TypeScript jezik (mada se može koristiti i JavaScript), uz korišćenje dekoratora (dekoratori … Read more

Node starter projekat (TypeScript + Docker)

Kostur projekta Pretpostavićemo da će projekat imati više manjih projekata tj. kontejnera, npr. deo za mikroservise, deo za rad sa bazom… Te je dobro da se u root-u projekta naprave podfolderi za svaki manji projekat npr.:

Kreiranje package.json Prvo ćemo kreirati package.json fajl u root folderu projekta. Ovaj fajl će sadržati sve potrebne informacije … Read more

Promenjive okruženja = ENV variable

Šta su promenjive okruženja Promenljive okruženja (eng. „Environment Variables„) koriste se na različitim mestima u razvoju softvera i IT infrastrukturi, kao npr. kod: operativnih sistema („PATH“ promenjiva koja definiše direktorijume u kojima operativni sitem traži izvršne fajlove), razvoja softvera (promenljive za čuvanje konfiguracionih parametara kao što su API ključevi, baze podataka, URL-ovi..), bezbednost (za čuvanje … Read more

Objektno orjentisano programiranje

Šta je objektno orjentisano programiranje? Objektno orjentisano programiranje ili skraćeno „OOP“ je način organizovanja koda oko manjih celina pod nazivom „objekat“. Objektno orjentisano programiranje pomaže u strukturiranju koda u razumljive i samostalne jedinice koje se mogu lako ponovno koristiti u različitim delovima programa. Primenom objektno orjentisanog programiranja se dobija pregledniji i razumljiviji programski kod koji … Read more

Šta je Socket?

Socket „Soket“ predstavlja krajnju tačku za slanje ili primanje podataka u mreži. Drugim rečima, to je interfejs između aplikacije i mrežne komunikacije na operativnom sistemu. Kroz sokete, aplikacije mogu komunicirati međusobno preko mreže. Soketi su osnova za mnoge mrežne aplikacije i usluge, uključujući veb pretraživače, e-mail klijente, chat aplikacije i mnoge druge. Oni omogućavaju komunikaciju … Read more

Kreiranje servera sa Node.js

Kreiranje servera bez biblioteke Za kreiranje servera je potreban http/https objekat koji je ugradjen u core node.js-a te ga možemo importovati kao modul. Postoje dve opcije modula: http – Http je jedan od ugrađenih modula koji dolazi sa Node.js i omogućava kreiranje servera za prihvatanje zahteva od klijenta i vraćanje odgovora https – Https modul … Read more

Uvod u Node.js

Šta je node.js? JavaScript je programski jezik koji ne može da se samostalno koristi već je za njegovo izvršavanje potrebno specijalno okruženje tzv. „JavaScript runtime environment“. Najpoznatiji „JavaScript runtime environment“ je browser, ali ukoliko želimo da izvršavamo JavaScript i van browser-a tu na scenu nastupa node.js kao drugi „JavaScript runtime environment“. Node.js je open-source, cross-platform … Read more

Iteratori & Generatori

Iterable protokol

Karakteristike protokola

„Iterable protokol“ je dogovoren APi na nivou JavaScript-a kao jezika, za kreiranje objekata koji se mogu koristiti za iteraciju nad kolekcijom podataka. Ključna karakteristika ovoga protokola je „sekvencijalanost“ tj. osobina da pri iteraciji vraća vrednost iterabilne strukture jednu po jednu. Tipovi podataka koji zadovoljavaju iterable protokol se nazivaju „iterable kolekcije“. Poštujući iterable protokol potrebno je da funkcija vraća objekat koji sadrži specijalnu metodu „next()“.

next()

Metoda next() pri pozivanju vraća člana kolekcije privremeno „obmotanog“ (eng. wrapped“) sa objektom koji ima dva svojstva: value i done. Dokle god postoje članovi za iteraciju, metoda vraća vrednost svojstsva „done“ kao“false“, a tek kada iteracija „dodje“ do kraja, svojstvo „done“ se definiše kao „true“.

Primer

Kroz naredni primer je opisana koncepcija protokola:

Koji su tipovi podataka iterabilni?

Treba nagalasiti da obični javascript objekti nisu iterabilini, ali zato sledeći tipovi podataka zadovoljavaju iterable protokol:

  • String
  • Array
  • Array-like argumenti ili NodeList objekat
  • TypedArray
  • Map
  • Set

Koji mehanizmi u JavaScriptu zahtevaju iterable kolekciju?

Mehanizmi za čije korišćenje su neophodne „iterable“ kolekcije su:

  • Destructuring
  • for..of loop
  • Array.from()
  • Spread operator ()
  • Maps & Sets
  • Promise.all(), Promise.race()
  • yield*
Primer

Iterable kolekcije mogu koristi mehanizme za koje su potrebni iterable kolekcije kao npr. iteracija sa „for..of“ petljom:

ili pri destruktuiranju:

Read more

Destruktuiranje u JavaScriptu

Uvod

destruktuiranje niza

Pojam „destruktuiranje“ podrazumeva „izvlačenje“ podataka iz strukture podataka (objekat ili niz) i pravljenje novih manjih struktura kojima se dodeljuju vrednosti na osnovu „izvučenih“ podataka.
Pre ES2015 je bilo neophodno da se napiše kod koji bi vršio destruktuiranje ali srećom sa novim JavaScript standardom je došla i sintaksa koja omogućava da JavaScript kompajler ovaj posao automatski izvršava umesto nas. Ova sintaksa se naziva „destructuring assignment“, i upravo predstavlja to što joj sam naziv govori, dodeljuje vrednosti iz neke strukture novim promenjivima.

Primer
„Manuelno“ destruktuiranje

Nova ES6 sintaksa

NAPOMENA: [a,b,c] iz prethodnog primera nove sintakse NIJE NIZ ! ! !
Kada se uglaste zagrade (ili vitičaste) nalaze sa leve strane znaka jednakosti, to ukazuje na patern (šablon) za dodeljivanje promenjivih. One nam omogućavaju da definišemo JavaScript kompajleru kako i pod kojim nazivom varijabli da sačuva destrukturisane vrednosti.

Read more