relational-json simplifica ca niciodata lucrul cu date complexe.

Instalati relational-json

npm install relational-json –save

Cere

Relational-json este destul de direct. Aveti nevoie de relational-json in sursa dvs.:

var rJSON = require (“relational-json”);

si creati un db bazat pe o schema pe care o furnizati:

var db = rJSON (schema);

Cum functioneaza

Relational-json va infasoara datele primitive ( siruri, numere, booleeni ) intr-o structura imuabila si relationala. Formatul este la fel ca JSON, cu exceptia faptului ca datele dvs. pot face referire la alte parti ale arborelui dvs. de date. Acest lucru se realizeaza dinamic, datorita setarilor si setarilor de obiecte ES5. Fiecare obiect creat in relational-json este „pur”, in sensul ca nu are prototip nativ. Acest lucru ne permite sa valorificam mostenirea prototipica JavaScript in moduri foarte elegante.

relational-json este JSON cu constiinta.

De ce sa-l folosesti

Cand creati aplicatii web, veti avea de-a face cu o mare varietate de date si mai multe surse de date. Gestionarea actualizarilor starii aplicatiilor poate deveni rapid problematica, mai ales atunci cand anumite ramuri de date se bazeaza pe alte ramuri. Cand actualizati o valoare, trebuie sa va asigurati ca schimbarea se propaga peste tot. Relational-json simplifica toate acestea:

  1. Elimina duplicarea datelor
  2. Simplifica actualizarile de date ( trebuie doar sa modificati datele intr-un singur loc, deoarece nu exista duplicate )
  3. Acesta incapsuleaza datele dvs., logica de manipulare a datelor si restrictioneaza anumite operatiuni ( cum ar fi tipul de date gresit intr-un camp dat )
  4. Este extrem de portabil, deoarece datele folosesc binecunoscuta sintaxa JSON.
  5. Nu face presupuneri de mediu ( poate fi utilizat in browser, pe nod etc. )

Prescriptie

Datorita naturii sale referentiale, JSON.stringify () nu functioneaza conform asteptarilor. Acest lucru se datoreaza cuibaririi infinite , care va face sa sariti de la prototip la copil si inapoi, infinit, daca nu controlati traversarea datelor. ( oferim un utilitar simplu, care atenueaza in totalitate problema )

De asemenea, relational-json este compatibil IE9 +, dar nu poate fi redus sau completat pentru browserele mai vechi.

Schema

Relational-json asteapta o schema de obiecte javascript care reprezinta arborele de date pe care doriti sa il utilizati. Mai jos este o defalcare completa a notatiei schemei:

{tableName: {primary: “camp de utilizat ca identificator unic. Campul trebuie sa fie in campuri obiect.”, campuri: {fieldName: {allowNull: “se poate seta valoarea la nul (adevarat / fals)”, dataType: “datatype a campului (sir, numar intreg, float, data, ora, data si ora, boolean) “, defaultValue:” valoare de utilizat daca nu a fost furnizata la momentul crearii “}}, se extinde: {table:” tableName care este parintele acestui tabel “, localField:” camp propriu care face referinta la tabelul parinte “, foreignField:” campul tabelului parinte cu care este asociat campul local “}, agregate: [{tabel:” tableName care este agregat “, alias:” alias de proprietate de utilizat pentru relatie ” , localField: “camp local utilizat pentru a construi relatii agregate”, foreignField: “camp strain utilizat in relatie agregata”,cardinalitate: “(single / many), o singura relatie ofera o relatie directa cu un alt obiect. O relatie de multi creeaza o serie de obiecte”}]}}

Campurile de tabel pot fi, de asemenea, scrise pe scurt. Aceasta creeaza un camp care nu are valoare implicita si nu poate fi nul :

tableName: {fields: {id: “integer”, name: “string”}}

Relatii de schema

se extinde

Extinde este un model de mostenire . Inseamna ca randurile unui tabel sunt copilul randurilor unui alt tabel. Concret, fiecare obiect rand creat in acest tabel va folosi un obiect rand dintr-un tabel parinte ca prototip . Relatia extinde se reflecta si in randurile tabelelor parinte, care vor contine o proprietate pentru randul copil. Acest lucru va va permite sa parcurgeti copacii de date in ambele directii ( ascendenti stramosi si descendenti descendenti ).

follando española jovencitas peludas follando
sexo muy duro ancianas españolas follando
se corre en el coño de su hija porno gratis viejas
me hace una paja sexo playa nudista
porno gay en castellano videos de maduras guarras
lesbianas cagando gitanas xxx

trios con españolas intercambio de parejas en español
glory hole españa halle berry desnuda
videos porno abuelas potno
ver sexo gratis relatos sexo con maduros
brazzers online porno andaluz
peliculas eroticas gratis madura se corre
porno hat casadas cachondas
porno traducido al español parejas liberales españolas
españolas pajeandose maduras pajeando
folladas caseras reales super mamadas
shakira follando actores porno gay españoles
coños peludos rubios potro de bilbao
fontanero cachondo seso gratis

extinde exemplul

var schema = {Vehicul: {primar: “id”, campuri: {id: “intreg”, an: “intreg”, producator: {allowNull: adevarat, dataType: “sir”}}}, Masina: {primar: ” id “, campuri: {id:” intreg “, model:” sir “}, extinde: {tabel:” Vehicul “, localField:” id “, foreignField:” id “}}}; var db = rJSON (schema); db.Car.post ({id: 1, an: 2001, producator: „Toyota”, model: „Camry”}); db.Car.get (1); / * recuzita proprie {id: 1, model: “Camry”} * / // recuzita prototip db.Car.get (1) .year; // 2001 db.Car.get (1) .maker; // „Toyota” db.Vehicle.get (1); / * {id: 1, an: 2001, producator: “Toyota”, Masina: {id: 1, model: “Camry”}} * /

agregate

Aceasta este o relatie compusa intre tabele, nu pe baza de mostenire. Concret, daca tabelul A „agregeaza” tabelul B, randurile din tabelul A vor avea o proprietate care indica un rand ( obiect ) sau mai multe randuri ( matrice ) din tabelul B, pe baza relatiilor cardinalitate. Spre deosebire de extinde, agregatul nu afecteaza lantul prototip.

exemplu de agregate (unic)

var schema = {Vehicul: {primary: “id”, campuri: {id: “integer”, anul: “integer”, maker: {allowNull: true, dataType: “string”}}}, Client: {primary: ” id “, campuri: {id:” intreg “, nume:” sir “, vehicle_id: {allowNull: true, dataType:” intreg “}}, agregate: [{tabel:” Vehicul “, alias:” Vehicul “, localField : “vehicle_id”, foreignField: “id”, cardinalitate: “single”}]}}; var db = rJSON (schema); db.Vehicle.post ({id: 1, an: 2001, producator: “hyundai”}); db.Client.post ({id: 2, nume: “bob the builder”, vehicle_id: 1}); db.Client.get (2); / * {id: 2, nume: “bob the builder”, Vehicul: {id: 1, an: 2001, producator: “hyundai”}} * /

Tabel: obiect

Tip : global typedef

Rezumat : Odata ce relational-json a analizat schema dvs., acesta va returna baza de date relationala, care va fi o colectie a tuturor tabelelor din datele dvs. Fiecare tabel foloseste un dictionar intern pentru a stoca, prelua si manipula datele sale (randuri). Tabelele sunt in esenta interfata prin care manipulati datele.

  • Tabel: obiect
    • .meta: obiect
    • .get () ⇒ obiect | Matrice. <obiect>
    • .post (d) ⇒ obiect
    • .put (d, pkValue) ⇒ obiect
    • .delete (id) ⇒ obiect

table.meta: obiect

Tip : proprietate instanta a

Rezumatului tabelului : interfata partiala in proprietatile detaliilor interioare ale tabelului

Nume Tip Descriere sir de nume Cheia de proprietate a tabelei in baza de date relational-json pk numele sirului campului primar al tabelului alias sir primar al tabelului.meta.pk alias Obiectul mapa hashmap al proprietatilor randurilor tabelului care indica alte tabele din relational-json baza de date ownRequiredFields Array. <sir> lista cu toate campurile obligatorii proprii, care trebuie sa aiba o valoare tot timpul allRequiredFields Array. <sir> lista cu toate campurile obligatorii, inclusiv campurile obligatorii proprii si stramosilor

table.get () ⇒ obiect | Matrice. <obiect>

Tip : metoda instantei din

Rezumatul tabelului : returneaza date de rand care se potrivesc cu argumentele furnizate pe valoarea campului lor principal

Returneaza : obiect | Array. <object> – daca nu este furnizat niciun argument, acesta returneaza o serie de date din tabel. daca este furnizat 1 argument, returneaza acel obiect rand daca sunt furnizate multe argumente, returneaza un tablou care contine acele obiecte rand

table.post (d) ⇒ obiect

Tip : metoda instantei din

Rezumatul tabelului : creeaza un nou rand de date

Returneaza : obiect – instanta rand creata

Parametru tip Descriere d pachet de date obiect, trebuie sa contina toate campurile obligatorii

table.put (d, pkValue) ⇒ obiect

Tip : metoda instantei din

Rezumatul tabelului : modifica un rand de date, recreand randul combinat cu noile date

Returneaza : obiect – rand nou creat

Tipul de parametri Implicit Descriere d camp obiect: obiect obiect al datelor de modificat pkValue * d. Valoare primara primara pentru a gasi randul de modificat

table.delete (id) ⇒ obiect

Tip : metoda instantei din

Rezumatul tabelului : sterge recursiv randul tinta si este copil (daca exista)

Returneaza : obiect – rand sters

Param Tip Descriere id * valoarea campului principal al randului de sters