Quindi sto avendo (quello che penso sia) un problema generale con dati di taglio. Mi chiedo come personalizzare correttamente l'adattatore per adattarsi alla seguente situazione.Sottosezioni con emberjs + ember-data
Fingere Ho due oggetti: Post
e Tag
Calling App.Post.find()
restituisce tutti i messaggi di GET
ing api.com/posts
, App.Post.find(1)
si trova in api.com/posts/1
. Questo è buono.
App.Tag.find()
restituirà tutti i tag disponibili a api.com/tags
. App.Tag.find(1)
restituirà il tag appropriato nell'URL corretto. Anche buono.
Se creo nuovi messaggi tramite App.Post.createRecord({...})
L'indirizzo POST
sarà corretto. Lo stesso vale per la creazione di Tags
. Finora tutto è dandy.
Tags
su un Post
sono incorporati perché sono "su" quel post.
App.Adapter.map("App.Post", {
tags: {embedded: 'always'}
});
Durante il caricamento, Ember-data fa tutto bene e sono ancora super felice.
Quindi il mio problema deriva dall'aggiunta di Tag
a Post
. Vorrei PUT
o POST
l'oggetto tag su api.com/posts/1/tags
dove il server farà tutte le cose sul lato server.
Attualmente,
Ember-dati, con il set
{embedded: 'always'}
config, invierà unPUT
-api.com/posts/1
con l'interoPost
oggetto (con il nuovoTag
oggetto incluso) come una stringa in stringa JSON.Senza il set
{embedded: 'always'}
config, Tizzone-dati cercherà diPUT
l'oggetto tag perapi.com/tags
e invierà nell'oggettoTag
con un parametropost_id
modo che il lato server può fare tutte le cose lato server.
Preferisco non farlo 1 perché il mio server non è impostato in questo modo. Preferirei non fare 2 perché PUT/POST/GET
s su api.com/tags
dovrebbe essere davvero per la parte "Gestione tag" della mia applicazione, e non realmente applicare tag ai post. Un altro esempio di questo comportamento è nello Github v3 API for Labels & Issues.
Qualcuno sa di un modo di gestirlo con i dati ember? Grazie!
Avere lo stesso identico problema che abbiamo ragionato allo stesso modo - sembra avere poco senso dal momento che Ember è RESTFul, no? – andreimpop
Hey @andreimpop Ho finito con l'uso di embedded: "load", la nostra propria ajax per il commit sul server, e ho manipolato manualmente la macchina dello stato di ember-data. Tutto ciò è impressionante - ho intenzione di rifarlo quando questo diventa vero: http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html –