Manevrarea datelor JSON API catre client JavaScript simplificata.

Versiunea actuala este v0.4.0-beta. Este inca o lucrare in desfasurare, dar ar trebui sa faca ceea ce spune.

Descriere

Standardul JSONAPI este excelent pentru schimbul de date (care este scopul sau), dar formatul nu este ideal pentru a lucra direct intr-o aplicatie. jsonapi-datastore este o biblioteca JavaScript-agnostic cadru (dar o versiune AngularJS este furnizata pentru comoditate) care elimina sarcina de a gestiona datele JSONAPI din partea clientului.

Ce face:

  • cititi sarcinile utile JSONAPI,
  • reconstruiti graficul de date subiacent,
  • va permite sa interogati modele si sa accesati relatiile lor direct,
  • creati modele noi,
  • serializati modele pentru creare / actualizare.

Ce nu face:

  • faceti cereri catre API-ul dvs. Va proiectati adresele URL ale punctelor finale, modul in care gestionati autentificarea, stocarea in cache, etc. depinde in totalitate de dvs.

Se instaleaza

Instalati jsonapi-datastore cu bower ruland:

$ bower instaleaza jsonapi-datastore

sau cu npm ruland:

$ npm instalati jsonapi-datastore

Analizarea datelor

Trebuie doar sa apelati metoda .sync () a magazinului dvs.

var store = new JsonApiDataStore (); store.sync (date);

Aceasta analizeaza datele si le incorporeaza in magazin, avand grija de inregistrarile deja existente (prin actualizarea lor) si de relatii.

Analizarea cu meta date

Daca aveti meta date in sarcina dvs. utila, utilizati metoda .syncWithMeta din magazinul dvs.

var store = new JsonApiDataStore (); store.syncWithMeta (date);

Aceasta face tot ceea ce face .sync (), dar returneaza un obiect cu date si meta split.

Preluarea modelelor

Trebuie doar sa apelati metoda .find (type, id) a magazinului dvs.

var articol = store.find (‘articol’, 123);

sau apelati metoda .findAll (tip) a magazinului dvs. pentru a obtine toate modelele de acel tip.

var articles = store.findAll (‘articol’);

Toate atributele si relatiile sunt accesibile prin intermediul modelului ca proprietati ale obiectului.

console.log (articol.autor.name);

In cazul in care o resursa asociata nu a fost preluata inca (fie ca resursa primara, fie ca resursa inclusa), proprietatea corespunzatoare din model va contine doar tipul si id-ul (iar proprietatea ._placeHolder va fi setata la adevarat). Cu toate acestea, modelele sunt actualizate la locul lor , astfel incat sa puteti prelua o resursa legata ulterior, iar datele dvs. vor ramane consistente.

Serializarea datelor

Doar apelati metoda .serialize () pe model.

Exemple

// Creati un magazin: var store = new JsonApiDataStore (); // Apoi, avand in vedere urmatoarea sarcina utila, care contine doua „articole”, cu un „utilizator” asociat, care este autorul ambelor: var payload = {data: [{type: ‘article’, id: 1337, atribute: {title : ‘Articol cool’}, relatii: {author: {data: {type: ‘utilizator’, id: 1}}}}, {type: ‘articol’, id: 300, atribute: {title: ‘Articol si mai cool ‘}, relatii: {autor: {date: {type:’ utilizator ‘, id: 1}}}}]}; // il putem sincroniza: var articles = store.sync (sarcina utila); // care va returna lista articolelor sincronizate. // Mai tarziu, putem prelua unul dintre acestea: var article = store.find (‘articol’, 1337); // Daca resursa autorului nu a fost inca sincronizata, putem accesa doar id-ul si tipul sau: console.log (article.author); // {id: 1, _type: ‘ articol ‘} // Daca sincronizam mai tarziu resursa autorului: var authorPayload = {data: {type:’ utilizator ‘, id: 1, atribute: {nume:’ Lucas ‘}}}; store.sync (authorPayload); // putem accesa apoi numele autorului prin vechea noastra referinta la „articol”: console.log (articol.autor.name); // „Lucas” // De asemenea, putem serializa orice model intreg intr-un mod conform JSONAPI: console.log (article.serialize ()); // … // sau doar un subset al atributelor / relatiilor sale: console.log (article.serialize ({atribute: [‘titlu’], relatii: []})); // … numele autorului); // „Lucas” // De asemenea, putem serializa orice model intreg intr-un mod conform JSONAPI: console.log (article.serialize ()); // … // sau doar un subset al atributelor / relatiilor sale: console.log (article.serialize ({atribute: [‘titlu’], relatii: []})); // … numele autorului); // „Lucas” // De asemenea, putem serializa orice model intreg intr-un mod conform JSONAPI: console.log (article.serialize ()); // … // sau doar un subset al atributelor / relatiilor sale: console.log (article.serialize ({atribute: [‘titlu’], relatii: []})); // …

Documentatie

A se vedea DOCUMENTATION.md.

Ce lipseste

In prezent, magazinul nu gestioneaza atribute de linkuri sau meta la nivel de resursa sau la nivel de relatie.

Note

AngularJS

jsonapi-datastore este inclus in pachet cu un wrapper AngularJs. Includeti doar ng-jsonapi-datastore.js in index.html si solicitati modulul beauby.jsonApiDataStore in aplicatia dvs. Puteti utiliza apoi fabrica JsonApiDataStore, care este definita in esenta dupa cum urmeaza:

{magazin: new JsonApiDataStore (), Model: JsonApiDataStoreModel}

astfel incat sa il puteti utiliza dupa cum urmeaza:

.module angular (‘myApp’) .controller (‘myController’, function (JsonApiDataStore) {var article = JsonApiDataStore.store.find (‘article’, 1337); var newArticle = new JsonApiDataStore.Model (‘article’); newArticle .setAttribute (‘titlu’, ‘Articolul meu interesant’); console.log (newArticle.serialize ());});

Contribuind

Toate cererile de tragere sunt binevenite!