JoinJS este o biblioteca JavaScript pentru maparea imbinarilor complexe de baze de date la obiecte imbricate. Este o alternativa mai simpla la un Mapper de relatii obiecte (ORM) complet si va ofera control direct asupra interactiunilor bazei de date.

Motivatie: control direct, fara prostii, asupra bazei de date

ORM-urile traditionale introduc un strat gros de abstractizare intre obiecte si tabelele bazei de date. De obicei, aceasta impiedica, mai degraba decat ajuta, productivitatea dezvoltatorilor. In cazurile de utilizare complexe, este suficient de dificil sa concepeti interogari eficiente, dar cu ORM-uri trebuie sa le invatati sa genereze aceeasi interogare. Este nevoie de timp suplimentar pentru a face acest lucru si este posibil sa nu puteti produce aceeasi interogare. In cel mai rau caz, ORM poate atinge baza de date de mai multe ori pentru ceva ce ati putut face intr-o singura interogare.

JoinJS adopta o abordare mult mai simpla si simpla, inspirata de un popular cadru de cartografiere Java numit MyBatis (vezi postarea pe MyBatis fata de alte ORM-uri. Puteti utiliza orice driver de baza de date sau constructor de interogari (cum ar fi Knex.js) pentru a va interoga baza de date, totusi utilizati JoinJS pentru a converti rezultatele returnate intr-o ierarhie de obiecte imbricate.

Exemplu

Sa presupunem ca aveti o relatie unu-la-multi intre o echipa si jucatorii acesteia. Vrei sa recuperezi toate echipele impreuna cu jucatorii lor. Iata interogarea pentru a face acest lucru:

SELECTeaza t.id AS team_id, t.name AS team_name, p.id AS player_id, p.name AS player_name FROM teams t LEFT OUTER JOIN players p ON t.id = p.team_id;

Sa presupunem ca aceasta interogare returneaza urmatorul set de rezultate:

let resultSet = [{team_id: 1, team_name: ‘New England Patriots’, player_id: 1, player_name: ‘Tom Brady’}, {team_id: 1, team_name: ‘New England Patriots’, player_id: 2, player_name: ‘Rob Gronkowski ‘}, {team_id: 2, team_name:’ New York Jets ‘, player_id: 3, player_name:’ Geno Smith ‘}, {team_id: 2, team_name:’ New York Jets ‘, player_id: 4, player_name:’ Darrelle Revis ‘}];

Puteti utiliza JoinJS pentru a converti acest set de rezultate intr-o serie de echipe cu jucatori cuibariti:

[{id: 1, nume: ‘New England Patriots’, jucatori: [{id: 1, nume: ‘Tom Brady’}, {id: 2, nume: ‘Rob Gronkowski’}]}, {id: 2, nume: ‘New York Jets’, jucatori: [{id: 3, nume: ‘Geno Smith’}, {id: 4, nume: ‘Darrelle Revis’}]}]

Pentru a-l invata pe JoinJS cum sa faca acest lucru, trebuie sa creati doua harti de rezultate care sa va descrie obiectele:

const resultMaps = [{mapId: ‘teamMap’, idProperty: ‘id’, proprietati: [‘name’], colectii: [{name: ‘jucatori’, mapId: ‘playerMap’, columnPrefix: ‘player_’}]}, {mapId: ‘playerMap’, idProperty: ‘id’, proprietati: [‘name’]}]

Dupa ce ati creat aceste harti de rezultate, puteti apela pur si simplu JoinJS pentru a converti setul de rezultate in obiecte:

let mappedResult = joinjs.map (resultSet, resultMaps, ‘teamMap’, ‘team_’);

Asta este! Nu conteaza cat de profunda sau de complexa este ierarhia obiectelor dvs., JoinJS poate sa o mapeze pentru dvs. Cititi documentatia de mai jos pentru mai multe detalii. Puteti gasi mai multe exemple in suita de testare.

follada por su jefe
maduras enculadas sexogratis
coños gordos sexo gratis
mujeres normales desnudas videos sexo
michelle jenner desnuda mia kalifa
rebeca linares masaje porno abuelas
sol sanchez actriz porno videos de sexo gratis
coñosxxx pprno
asiaticasxxx guarras españolas
putasfollando nicolette shea
videos porno caseros en español videos sexo gratis
casting porno español zofilia
madres haciendo pajas a sus hijos abuelas porno
porno retro incesto videos guarros
swingers españoles maduras en playas nudistas
negras tetonas videos de investo
maduras españolas amateur video sexo
culos porno coñitos
filme porno romanesti guarras.com
pilladas españolas follando videos guarros

Urmati tutorialul pas cu pas pentru o introducere practica. Odata ce ati insusit elementele de baza, consultati proiectul Gestionati banii mei pentru a vedea cum puteti crea o aplicatie completa completa cu un front-end folosind JoinJS si alte biblioteci utile.

Instalare

$ npm instalare – salvare join-js

Nu uitati liniuta din numele pachetului (join-js).

Utilizarea cu ES5:

var joinjs = require (‘join-js’). implicit;

Utilizarea cu ES6:

import joinjs din ‘join-js’;

Documentatie

ResultMap

Mapele rezultate sunt folosite pentru a invata JoinJS cum sa mapeze rezultatele bazei de date la obiecte. Fiecare harta a rezultatelor se concentreaza pe un singur obiect. Proprietatile unui ResultMap sunt descrise mai jos. Puteti gasi mai multe exemple in suita de testare.

  • mapId {String} – Un identificator unic pentru harta

  • createNew {functie} (optional) – O functie care returneaza o noua instanta goala a obiectului mapat. Utilizati aceasta proprietate pentru a construi un obiect personalizat in locul unui obiect JavaScript generic.

  • idProperty {Sir | Obiect | Array (String | Object)} (optional) – specifica numele proprietatii id din obiectul mapat si din setul de rezultate. Implicit este id, ceea ce implica faptul ca numele proprietatii id din obiectul mapat, precum si numele coloanei din setul de rezultate sunt ambele id. Daca cele doua nume sunt diferite, trebuie sa specificati forma obiectului, de ex. {Nume: ‘id’, coloana: ‘persoana_id’}.

    • nume – proprietate care identifica obiectul mapat
    • coloana – proprietate care identifica inregistrarea bazei de date in setul de rezultate

    In plus, puteti specifica cheia compusa trecand o matrice de siruri si / sau obiecte, de ex. [‘Person_id’, {name: ‘language’, column: ‘language_id’}]

  • proprietati {Matrice} (optional) – nume ale altor proprietati. Pentru orice proprietate care are un nume diferit in obiectul mapat fata de setul de rezultate, trebuie sa specificati forma obiectului, de ex. {Nume: „prenume”, coloana: „prenume”. Proprietatile formei obiectului sunt:

    • nume – numele proprietatii din obiectul mapat
    • coloana – numele proprietatii din setul de rezultate
  • asociatii {Array} (optional) – mapari pentru asociatii cu alte obiecte. Fiecare mapare contine:

    • nume – numele proprietatii asociatiei din obiectul mapat
    • mapId – identificator al hartii de rezultate a obiectului asociat
    • columnPrefix (optional) – un prefix care se aplica fiecarei coloane a obiectului asociat. Implicit este un sir gol.
  • colectii {Matrice} (optional) – mapari pentru colectii de alte obiecte. Fiecare mapare contine:

    • nume – numele proprietatii colectiei din obiectul mapat
    • mapId – identificator al hartii de rezultate a obiectelor asociate
    • columnPrefix (optional) – un prefix care se aplica fiecarei coloane a obiectului asociat. Implicit este un sir gol.

API

JoinJS expune doua functii foarte simple care va ofera puterea maxima de a mapa orice set de rezultate la unul dintre mai multe obiecte JavaScript.

harta (resultSet, harti, mapId, columnPrefix)

Harti un rezultat Setati la o serie de obiecte.

  • resultSet {Array} – o serie de rezultate ale bazei de date
  • harti {Array} – o serie de harti cu rezultate
  • mapId {String} – mapId al obiectelor de nivel superior din resultSet
  • columnPrefix {String} (optional) – prefix care ar trebui aplicat la numele coloanelor obiectelor de nivel superior

Returneaza o serie de obiecte mapate.

mapOne (resultSet, harti, mapId, columnPrefix, isRequired)

Aceasta este o metoda de comoditate care mapeaza un resultSet la un singur obiect. Se foloseste atunci cand interogarea selectata este de asteptat sa returneze un singur rezultat (de exemplu, SELECT * FROM table WHERE id = 1234).

  • resultSet {Array} – o serie de rezultate ale bazei de date
  • harti {Array} – o serie de harti cu rezultate
  • mapId {String} – mapId al obiectului de nivel superior din resultSet
  • columnPrefix {String} (optional) – prefix care ar trebui aplicat la numele coloanelor obiectelor de nivel superior
  • isRequired {boolean} (optional) – este necesar sa aveti un obiect mapat ca valoare returnata? Implicit este adevarat.

Returneaza obiectul mapat sau nul daca nu a fost mapat niciun obiect.

Arunca un NotFoundError daca niciun obiect nu este mapat si isRequired este adevarat.

Resurse

  • Suita de testare JoinJS – contine exemple de diverse cazuri de utilizare
  • Tutorial pas cu pas – ofera o introducere practica la JoinJS
  • Gestionati banii mei – o aplicatie completa completata cu un front-end folosind JoinJS si alte biblioteci utile