graphql-leveler face posibil ca serverele GraphQL sa permita interogarilor clientilor sa controleze forma obiectelor de raspuns. Face acest lucru expunand un nou tip numit LevelerObjectType, care este un inlocuitor pentru GraphQLObjectType cu adaugarea a doua campuri convenabile: _get si _root.
Instalare
yarn add graphql-leveler sau npm install –save graphql-leveler
Utilizarea clientului
_obtine
_get permite clientilor sa interogheze obiectul pe cale, la fel ca metoda get () a lui lodash. De fapt, foloseste _.get () sub capota! Folosind _get in combinatie cu un alias, un client poate accesa proprietati adanc imbricate la nivelul superior al unui obiect cu orice nume de proprietate doreste clientul.
Interogari de baza
Daca rezolvatorul obiectului de pe server returneaza un obiect care arata astfel:
– in mod normal, clientul ar trebui sa solicite proprietati de genul acesta:
– si primiti ceva care ar arata astfel in schimb:
– indiferent daca aceasta este forma dorita de client.
Cu toate acestea, cu _get, acum clientul poate interoga aceeasi proprietate ca aceasta:
– aplatizarea raspunsului la ceva care arata astfel:
Nivelare cuibariteObjectType
Nici nu esti limitat la forme complet plane! Deoarece LevelerObjectType este un inlocuitor pentru GraphQLObjectType, puteti face din orice GraphQLObjectType un LevelerObjectType, permitand clientilor o flexibilitate extrema asupra formei de raspuns. De exemplu, sa presupunem ca am schimbat fiecare tip de obiect din exemplul de mai sus la LevelerObjectType. Clientii pot ajunge acum la aceeasi proprietate cu urmatoarea interogare:
– care va avea ca rezultat urmatoarea forma de raspuns:
Argumente optionale
In plus fata de argumentul caii necesare, campul _get ofera doua argumente optionale:
valoare implicita
Definiti valoarea implicita returnata daca nu exista o proprietate gasita pe calea data.
porno friki maduras corriendose
torbe videos completos tv porno
nudismo porno vidios xxx
follando sin querer coñitos
travestis meando pilladas desnudas
guarras españolas videoxxx
intercambio de parejas en español videos travestis
videosgay penes grandes
videoxxx scat porno
incesto lesbianas porno trans
videos de chicas gratis gitana follando
descargar peliculas porno español madres incestuosas
xxxhd peliculas eroticas gratis
videos chicas gratis abuelas follando
abuelas españolas xxx pajas caseras
incesto abuela nieto naomi woods
videos porno subtitulados porno casero españa
la engaña para follar madre pajea a su hijo
videos porno morbosos maduras.com
videos porno tetonas gratis coños calientes
property”, defaultValue: “missing”)}
allowUndefined
Comportamentul implicit este raportarea unei erori daca proprietatea de pe calea data lipseste si nu este furnizata nicio valoare implicita. Acest argument permite valori nedefinite, astfel incat rezultatul va fi nul in raspunsul pentru acel camp.
_radacina
_root permite clientilor sa acceseze radacina celui mai apropiat LevelerObjectType in locuri in care, de obicei, ar fi in afara domeniului de aplicare. Aceasta poate fi utilizata in combinatie cu aliasuri pentru a construi obiecte arbitrare in obiectul de raspuns. De exemplu:
Daca rezolvatorul obiectului de pe server returneaza acest lucru:
– atunci un client il poate interoga astfel:
– producerea unei forme ca aceasta:
In exemplul de mai sus, campul seasonNumber este imbricat in episode.season, care este un obiect arbitrar. Fara _root acel camp ar trebui sa fie interogat si returnat la radacina obiectului episod.
Utilizarea serverului
LevelerObjectType este un inlocuitor pentru GraphQLObjectType. Pentru fiecare obiect pe care doriti sa il puteti interoga cu _get, pur si simplu inlocuiti GraphQLObjectType cu LevelerObjectType.
Care sunt limitarile?
Numai valorile frunzelor scalare pot fi recuperate cu _get.
Inca de acum, din cauza complexitatii de a permite mai multe tipuri in raspunsul pentru un singur camp, nu pot fi returnate valori complexe, cum ar fi obiecte sau tablouri, de catre rezolvatorul de camp _get.
Rezolvatoarele de camp imbricate nu sunt invocate cu _get.
graphql-leveler nu invoca rezolutii de camp in interiorul obiectului care este cerut in prezent si, prin urmare, este limitat la proprietatile care exista in obiectul brut returnat de rezolvator.
De exemplu, daca obiectul tau brut arata astfel:
– in cazul in care datele relatiei tata se rezolva la (alerta spoiler):
Nu puteti scrie o interogare ca aceasta:
– intrucat datele brute pentru persoana „123” nu contin atributele relatiei sale de tata. In acest caz, fie va trebui sa va ajustati rezolvatorul de persoane pentru a include entitatea completa in relatie, fie sa ajustati interogarea clientului la ceva de genul acesta:








