Angular: Jak zintegrować frontend i backend za pomocą proxy?

Opublikowano: - tagi:

Angular udostępnia prosty mechanizm integracji Frontend'u z Backendem. Nazywa się proxy.

Załóżmy, że nasza aplikacja (frontend) działa na porcie: 4200. Mamy także backend, który działa na porcie: 3000. W tym przypadku mamy dwa różne porty, a to jest problem, ponieważ nie jesteśmy w stanie się odwołać do skryptu backendowego.

Ten problem możemy łatwo rozwiązać, konfigurując proxy.

Konfiguracja proxy

Zanim opiszę jak to zrobić, najpierw kilka słów jak to działa. Proxy sprawia, że frontend, który działa na przykład na porcie 4200 będzie mógł się odwołać do backendu, który działa pod innym portem.

Czyli na przykład mamy backend takim API:

Za pomocą proxy będziemy mogli odwołać się do tego API na przykład tak: http://localhost:4200/api/getUsers.

Proxy możemy skonfigurować, w dwóch krokach:

Stwórz plik proxy.conf.json

Zwartość pliku: proxy.conf.json:

{
  "/api/*": {
    "target": "http://localhost:3000",
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": "true",
    "pathRewrite": {"^/api": ""}
  }
}

W polu target podajemy adres, pod którym działa nasz backend.

Dzięki takiej konfiguracji będziemy mogli we frontendzie wywoływać API, w taki sposób: http://localhost:4200/api/someEndpoint.

Dodanie pliku proxy.conf.json

Teraz zedytujmy plik: package.json i w scripts dodajmy taką linijkę:

{
  "scripts": {
    "start": "ng serve --proxy-config proxy.conf.json"
  },
}

To wszystko. Uruchamiamy backend i frontend:

npm run start

Mamy dostęp do backendu we frontendzie.

Uwaga: Tego sposobu używa się zwykle, w trybie development. Jeśli chodzi o wersję produkcyjną, to można stworzyć virtual host.


NodeJS: Mongoose walidacja danych modelu

Opublikowano: - tagi:

Model danych

Biblioteka Mongoose dysponuje kilkoma walidatorami, które określamy w modelu dokumentu:

const PersonSchema = new Schema({
name: { type: String, required: true },
age: { type: Number, min: 18 }
});
const PersonModel = mongoose.model('person', PersonSchema);

Spróbujmy zapisać model danych, który jest niepoprawny:

const noNamePerson = new PersonModel({ age: 16 });
try {
await PersonModel.create(noNamePerson);
} catch(error) {
console.log('error: ', error);
}

W tym przypadku zwróci błąd walidacji.

Walidacja danych

A co w przypadku, gdybyśmy chcieli sprawdzić poprawność danych przed ich zapisem?

Istnieje metoda validateSync, która poinformuje nas o ewentualnych błędach:

const noNamePerson = new PersonModel({ age: 16 });

const validateErrors = noNamePerson.validateSync();
console.log(validateErrors);

try {
await PersonModel.create(noNamePerson);
} catch(error) {
console.log('error: ', error);
}

Jeśli nie ma błędów zmienna validateErrors będzie pusta. W przypadku błędów walidacji zwróci obiekt, do którego można się dostać w taki sposób:

const validateErrors = noNamePerson.validateSync();
console.log(validateErrors.errors.title);
console.log(validateErrors.errors.age);

Jak zbudować dyscyplinę?

Opublikowano: - tagi:

Po co budować dyscyplinę?

Ile razy zaczynałeś prace nad własnym projektem, ale po jakimś czasie go porzucałeś? Ile razy byłeś zmotywowany do działania, a po upływie kilku dni odpuszczałeś? Dlaczego znowu się nie udało?

Jedną z odpowiedzi jest: bo brakowało Ci dyscypliny.

Jeśli zbudujesz dyscyplinę, nie będziesz musiał przejmować się tym, że masz zły dzień lub Ci się nie chce. Po prostu działasz.

Dyscyplina to plan działania. Jeśli go masz, wiesz czym się zająć i nie tracisz czasu na zastanawianie się.

Dyscyplina to rygor. Jeśli wiesz, co jest do zrobienia, to się tym zajmujesz. Sam narzucasz sobie ile czasu, zamierzasz poświęcić na zadanie.

Dyscyplina to nawyk. Kiedy wiemy, że zbudowaliśmy dyscyplinę? Jeśli zauważysz, że przystępujesz do pracy automatycznie, tak że weszło Ci to w krew.

Korzyści z dyscypliny

Zbudowanie dyscypliny zajmuje czas. Trzeba to sobie uświadomić. Na początku jest najtrudniej. Jeśli wytrwamy, to zobaczymy tego wyniki.

Budowanie dyscypliny można porównać do efektu kuli śnieżnej. Na początku kula jest mała, ale z czasem nabiera rozpędu i się rozrasta.

Dlaczego warto budować dyscyplinę?

Działanie

Przede wszystkim będąc zdyscyplinowanym, skupiasz się na tym, co jest do zrobienia. Masz jasno określone cele. Masz plan. Po prostu pracujesz.

Nie polegasz na motywacji

Dyscyplina sprawdza się szczególnie przy celach długoterminowych. Pracujesz nad nowym projektem? Odchudzasz się? Nie polegaj na motywacji, ale zbuduj plan i go konsekwentnie realizuj. Motywacja przyda się na początku, ale szybko ucieknie. Wtedy do akcji powinna wkroczyć dyscyplina.

Nie mów: "Nie mam motywacji do tego", a skup się na: "Jeśli to jest dla mnie ważne, to powinienem pod to działanie zbudować dyscyplinę".

Odrzucasz wymówki

Masz gorszy dzień? Albo nie jesteś w nastroju? Co się stanie, jeśli sobie dzisiaj odpuścisz? Pewnie nic. Problem jest, wtedy gdy wybierając wymówki, tworzysz zły nawyk, który oddala Cię od wyznaczonego celu.

Polegając na dyscyplinie, podpisujesz kontrakt z samym sobą. W tym kontrakcie napisane jest: "Nie dla wymówek".

Efekty

To, co chcemy osiągnąć. Pracujemy, żeby coś sensownego zrobić. Czasami zajmuję to trochę czasu. Jeśli skupimy się na pracy, efekty przyjdą szybciej, niż myśleliśmy.

Zbuduj dyscyplinę

Więc jak zbudować dyscyplinę?

Wyznacz cel

Określ, co chcesz osiągnąć. Pod wyznaczony przez Ciebie cel będziesz budować dyscyplinę.

Określ plan

W tym kroku musimy odpowiedzieć sobie na pytania:

  1. Jaki będzie mój pierwszy krok?
  2. Jakie będą moje następne zadania?
  3. W jakie dni tygodniu zamierzam pracować nad swoim celem? Codziennie? Poniedziałek, środa, piątek?

Czasami jest tak, że możemy określić z góry wszystkie zadania, które należy robić po kolei. Ale nie zawsze. Jeśli nie jesteś w stanie określić wszystkiego naraz, skup się na najbliższym zadaniu. Kiedy je skończysz, możesz zaplanować kolejne działania.

Jeśli zadanie jest zbyt ogólne, rozbij je na mniejsze — bardziej precyzyjnie określone.

Blokowanie czasu i skupienie

Skoro wiesz, co jest do zrobienia i kiedy się tym zajmiesz, to sprecyzuj jeszcze, o której godzinie i ile czasu zamierzasz poświęcić na zadanie danego dnia. To jest bardzo ważne!

Na przykład:

Zamierzam pracować nad własnym projektem: w poniedziałek, środę i piątek o 17:00 przez 1 godzinę.

Uwaga: Pracując, w taki sposób nie mów sobie: "Dzisiaj zrobię to i to" - taki sposób myślenia jest błędny, ponieważ często jest tak, że nie przewidzisz przeszkód, na które napotkasz podczas pracy. Skup się na samym działaniu, a nie na rezultatach. Efekty przyjdą, ale potrzeba do tego cierpliwości. Dyscyplina polega właśnie na działaniu, a nie przewidywaniu.

Zmień to w nawyk

To jest najważniejszy punkt. Dyscyplinę zbudujesz, jeśli podpiszesz się pod swoim planem i będziesz go realizować w wyznaczone dni o określonej godzinie i poświęcał na to daną ilość czasu.


Podsumowanie: Luty 2022

Opublikowano: - tagi:

Co działo się w lutym na blogu? Oto podsumowanie:

W lutym napisałem 6 wpisów:

JavaScript:

  1. RxJS: Podstawy
  2. Jak stworzyć stały obiekt?
  3. RxJS: fromEvent
  4. RxJS: Operator of
  5. Webpack i TypeScript podstawowa konfiguracja

Inne:

  1. Pułapka produktywności: nie mam czasu

Przeczytałem dwie książki:

  1. Bohaterowie - Joe Abercrombie
  2. Praca i inne grzechy - Charlie LeDuff

Przesłuchałem dwa audiobooki:

  1. The Creative Habit - Twyla Tharp
  2. Saturnin - Jakub Małecki

RxJS: Operator of

Opublikowano: - tagi:

Operator of zamienia podane, w parametrach wartości w obiekt Observable.

Wywołanie tego obiektu spowoduje wysłanie wartości, w jakiej kolejności zostały przekazane do of.

Operator of przykłady

Przykład 1

import { of } from 'rxjs';

const observable = of(3, 2, 1);
observable.subscribe(value => console.log('value: ', value));

// Wynik:
// value: 3
// value: 2
// value: 1

Przykład 2

Jako parametry można przekazywać wartości różnego typu:

import { of } from 'rxjs';

const observable = of([1, 2, 3], 'Some text', true);
observable.subscribe(value => console.log('value: ', value));

// Wynik:
// value: [1, 2, 3]
// value: Some text
// value: true