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:
- Elimina duplicarea datelor
- Simplifica actualizarile de date ( trebuie doar sa modificati datele intr-un singur loc, deoarece nu exista duplicate )
- Acesta incapsuleaza datele dvs., logica de manipulare a datelor si restrictioneaza anumite operatiuni ( cum ar fi tipul de date gresit intr-un camp dat )
- Este extrem de portabil, deoarece datele folosesc binecunoscuta sintaxa JSON.
- 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:
Campurile de tabel pot fi, de asemenea, scrise pe scurt. Aceasta creeaza un camp care nu are valoare implicita si nu poate fi nul :
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
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)
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








