Mam więc (jak sądzę) ogólny problem z danymi Ember. Zastanawiam się, jak właściwie dostosować adapter, aby dostosować się do następującej sytuacji.Sub resources with emberjs + ember-data
Udawaj Mam dwa obiekty: Post
i Tag
Wywołanie App.Post.find()
zwraca wszystkie posty GET
ing api.com/posts
, App.Post.find(1)
znajduje się w api.com/posts/1
. To jest dobre.
App.Tag.find()
zwróci wszystkie znaczniki dostępne pod adresem api.com/tags
. App.Tag.find(1)
zwróci odpowiedni tag pod prawidłowym adresem URL. Również dobre.
Jeśli tworzę nowe posty przez App.Post.createRecord({...})
Zostanie POST
do poprawnego adresu URL. To samo dotyczy tworzenia Tags
. Jak dotąd wszystko jest eleganckie.
na Post
są osadzone, ponieważ są "włączone" w tym poście.
App.Adapter.map("App.Post", {
tags: {embedded: 'always'}
});
Podczas ładowania dane Ember robią wszystko dobrze, a ja wciąż jestem bardzo szczęśliwy.
Więc mój problem wynika z dodania Tag
do Post
. Chciałbym, aby PUT
lub POST
obiekt znacznika na api.com/posts/1/tags
, gdzie serwer zrobi wszystkie rzeczy po stronie serwera.
Obecnie
Ember-danych, z zestawem
{embedded: 'always'}
config, wyśle PUT
doapi.com/posts/1
z całegoPost
obiektu (z nowymTag
obiektu w zestawie) jako JSON stringified ciąg.Bez zestawu
{embedded: 'always'}
config, ember-data spróbujePUT
obiekt tag doapi.com/tags
i wyśle w obiekcieTag
z parametrempost_id
więc po stronie serwera można zrobić wszystkie rzeczy po stronie serwera.
Wolę nie robić 1, ponieważ mój serwer nie jest skonfigurowany w ten sposób. Wolałbym nie robić 2, ponieważ PUT/POST/GET
s na api.com/tags
powinien być naprawdę dla części "zarządzania tagami" mojej aplikacji, a nie tak naprawdę stosować znaczniki do postów. Innym przykładem tego zachowania jest Github v3 API for Labels & Issues.
Czy ktoś wie o sposobie obsługi tego z danymi ember? Dzięki!
Mając dokładnie ten sam problem, który opisaliśmy w ten sam sposób - wydaje się nie mieć sensu, ponieważ Ember jest RESTFul, nie? – andreimpop
Hej @andreimpop I skończyło się na użyciu wbudowanego: 'load', naszego własnego ajax'a, aby zatwierdzić serwer i ręcznie zmanipulować stanem-ember-data-machine. Wszystko to jest w porządku - planuję je ponownie, gdy to się stanie: http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html –