Projektowanie Serwera
2 godz. 7 min · Full-stack i Programowanie
Przemysław NowakSoftware EngineerJeżeli kiedykolwiek używałeś GraphQL aby pobrać dane na Front-endzie to z pewnością wiesz, że aby to zrobić musisz znać połączenie Grafów oraz wiedzieć jak stworzyć odpowiednie zapytanie. W kursie tym nauczysz się jak takie grafy projektować od strony serwera i dostarczać je dla FrontEnd Developerów.
Dowiesz się jakie jest połączenie pomiędzy schematem serwera a resolverami. Schemat (schema) to nic innego jak opis aplikacji GraphQL z podziałem na typy i relacje - właśnie w taki sposób tworzą się grafy - natomiast resolvery są odpowiednikami w kodzie - wykonującymi się za każdym razem kiedy ktoś wysyła odpowiednie zapytanie. Dokładnie wytłumaczę Ci korelację pomiędzy tymi dwiema rzeczami oraz na konkretnych przykładach zrozumiesz jak je implementować.
Statystyki są nieubłagane - coraz więcej firm inwestuje w GraphQL ze względu na rewolucyjne podejście do pobierania danych oraz jego prostotę. Dlatego jeżeli spojrzymy na rynek pracy to możemy zobaczyć, że GraphQL staję się pewnego rodzaju "must have", którego z pewnością warto się nauczyć.
Przekonasz się, że tworzenie backendu z GraphQL jest niesamowicie szybkie. Kiedy zrozumiesz podstawowe połączenia schematu i resolverów nic Cie nie powstrzyma od błyskawicznego pisania kodu. Jeżeli chcesz stworzyć MVP, czy zaimplementować elastyczny mikro serwis to GraphQL może okazać się strzałem w dziesiątke dlatego, że możesz stworzyć aplikację z prędkością światła, a co więcej, każda rozbudowa jest bardzo prosta ze względu na brak zależności w kodzie.
Tego wszystkiego nauczysz się w tym kursie, odczyt i zapis danych wydają się rzeczą normalną, natomiast dla mnie najciekawszą rzeczą są subskrypcje dzięki, którym możesz tworzyć aplikacje działające w czasie rzeczywistym. Zobaczysz, że z GraphQL wcale to nie jest skomplikowane, a wręcz banalnie proste!
Kurs ten jest skierowany do osób, które mają podstawową wiedzę nt. GraphQLa oraz znają podstawy JavaScript - ponieważ za pomocą NodeJS zaimplementujemy serwer GraphQL. Jeśli jeszcze tego nie zrobiłeś/aś - polecamy przed przystąpieniem do tego kursu przerobienie materiałów JavaScript od Podstaw, kursu podstawowego GraphQL, a mile widziana jest także znajomość zagadnień z kursów Node.js.
W tej lekcji pokażę Ci, jak pobierać relacyjne dane.
A więc jesteśmy w miejscu, w którym
skończyliśmy, mamy nasz box i będziemy chcieli również
pobrać autorów i stworzyć generalnie metodę do pobierania autorów.
Również tutaj będziemy chcieli mieć pole Authors.
Nie będzie to tablica typu autor
i również chciałbym zaznaczyć te pola jako label i teraz dodamy typ autora.
Podglądamy naszą bazę danych i tutaj widzimy, że ten autor ma 3 pola
ID, First name oraz Last name i dokładnie takie pola tutaj również deklarujemy.
Czyli ID będzie typu id.
First name jest to string oraz Last name.
Jest to również string.
OK, nasza sima wygląda dobrze.
Musimy teraz tutaj jeszcze zadeklarować pole get Autor.
Dobra i ten autor będzie zwracał.
Po ID. Czyli tutaj musimy dodać argument,
w którym będziemy filtrować tego autora i on będzie zwracał po prostu autor.
W zasadzie to może być null, ponieważ
możemy jakiegoś autora nie znaleźć w bazie danych i wtedy zwracamy nulla.
Dobra, przejdźmy teraz do Resolve
crit Solver i będziemy musieli teraz tutaj rezerwować ten typ.
Autor, a w zasadzie autor,
więc tutaj stworzymy jeszcze jeden konta i będzie to po prostu bug.
Czyli możesz to sobie wyobrazić jako taką relację, gdzie w tym miejscu tworzyli
byśmy po prostu resolve dla typu, który już mamy
zadeklarowane w tym miejscu i byśmy tutaj po prostu pisali pole
autorskie, więc po prostu tutaj dodamy ten book, który tu stworzyliśmy.
Czyli tego constans.
Jego zaś importujemy w tym miejscu
tak aby ciągle mieć ten kod ładnie rozdzielony na domeny.
Dajemy tutaj autorski.
I będzie to również metoda.
I tak dostajemy oferenta, który nam nie będzie potrzebny.
Nie będzie nam potrzebny również, a w zasadzie nam będzie potrzebny.
W tym miejscu
nie będzie nam potrzebne pole argument na pewno i również będzie nam potrzebna
baza danych i patent będzie nam potrzebny z tego
względu, że w domyśle te parę tak naprawdę zwróci nam.
To tablica autorska, czyli my dostaniemy tutaj tablicę tych ID
w tym miejscu jako parent authors, czyli jeżeli to.
Destruktor rysuje, to właśnie tak to wygląda.
Ponieważ tutaj wracamy po prostu bez filtrowania.
Pełny blok, czyli ten blok DB bux zwraca tablicę z tymi polami, więc
siłą rzeczy dostaniemy również tutaj pole autorskie w takiej formie, a nie
innej i będziemy chcieli sięgnąć do bazy danych, aby pobrać tego autora.
Czyli będziemy chcieli sięgnąć tutaj do
tej tablicy i pobrać tych autorów poprzez ID.
No więc wróćmy do Buck Resolve i ja będę chciał po prostu tutaj naszych autorów
przefiltrować na podstawie tego, co znajduje się w tej tablicy.
Czyli będę mógł tutaj zwrócić po prostu db authors i użyć metody filter.
Dlatego, że jest to po prostu tablica w
JavaScripcie, to możemy to zrobić w ten sposób.
Gdyby to była jakaś baza danych MySQL czy
MongoDB to pewnie byś musiał tutaj utworzyć odpowiedniego selektora.
Natomiast jeżeli tutaj mamy po prostu taką
bazę danych, to możemy to zrobić w ten sposób.
Natomiast chciałbym Ci wytłumaczyć jak
generalnie działa ta relacja pomiędzy typami.
Teraz dostaliśmy już tutaj pole autorskie i tutaj będziemy w takim
razie chcieli na odpowiednim autorze i sprawdźmy, czy w
tej tablicy authors, czyli w tych autorach znajduje się nasz autor.
Czyli możemy użyć tutaj metody includes.
I sprawdzić czy w tej tablicy jest ten
autor ID, czyli ten konkretny autor, przy którym jesteśmy podczas filtrowania.
Ponieważ będziemy tak naprawdę się interesować po każdym autorze w bazie
danych, będziemy sprawdzać czy w tablicy, którą dostaliśmy z Parents czyli z Bugs.
Czyli Xbox znajduje się ID autora, który jest właśnie w tej tabeli autorstwa.
I w ten sposób mamy proste filtrowanie zrobione i powinno nam to to tutaj zwracać
tych autorów poprawnie, więc możemy to zobaczyć.
Przejdźmy do Get Bucks.
Metoda nam powinna działać bez zmian, natomiast teraz już powinniśmy móc
również kolorować po autorach, a więc autor i po prostu np.
First name Last name.
Zobaczmy co się stanie.
Dobra, mamy błąd, że nie może zwrócić Nulla.
Zobaczmy, gdzie popełniłem błąd.
Po prostu ten plik nie jest zapisany, więc podejrzewam, że nie zadeklarowaliśmy w tym
miejscu resolve, a już teraz jest zadeklarowane, ponieważ
plik został zapisany i zobaczmy czy działa.
I ok działa.
Natomiast mamy tych autorów pustych, więc zobaczmy co jest nie tak.
Przejdźmy do Book Recorder.
I tutaj albo przez przypadek usunąłem, albo po prostu nie dodałem tego ID.
Natomiast musiałem sprawdzać czy w tej
tablicy authors jest ten konkretny ID tego autora.
Teraz już powinno wszystko działać, więc przejdźmy jeszcze raz.
No i super.
No i mamy zwróconych również autorów z drugiej tabeli.
Jak widzisz wszystko tutaj działa poprawnie.
I to już wszystko w tej lekcji.
A ja zapraszam Cię do następnej.