2014-06-16 10 views
5

Ember Data szybko przemieszcza się z wersji do wersji, a wraz z nią zmienia się sposób zapisywania danych. W tej chwili z wersją 1.0.0-beta.8.2a68c63a właściwą metodą jest aktualizacja rekordu, a następnie zrobienie record.save() w celu wywołania żądania PUT z powrotem do serwera. Przy mojej obecnej aplikacji aktualizuję wiele rekordów jednocześnie, co może wiązać się z 50 żądaniami ajaxa PUT z powrotem na serwer. Obawiamy się problemów z wydajnością i wydajnością, ale nie znaleźliśmy żadnej dokumentacji dotyczącej żądań wsadowych. Jeśli już, znaleźliśmy wiele innych osób, które szukają tego samego i nie znalazły dobrego rozwiązania.Ember Data bulk zapisuje na serwerze

W tej chwili zajmuję się ręczną serializacją tych obiektów i zapisaniem ich z powrotem na serwerze, który uważałem za cały punkt Ember Data. Więc może w moim najlepszym interesie jest, aby w ogóle nie używać Ember Data i ręcznie zakodować żądania CRUD i utworzyć własną warstwę danych do obsługi tego wszystkiego i po prostu użyć ArrayControllers i ObjectControllers, aby zapisać dane i powiązać je z szablonami Handlebars. Wydaje się, że korzyścią jest to, że będzie działał tak, jak tego potrzebuję (żądania wsadowe), a kod nie zerwie z przyszłymi wersjami Ember Data. Wszelkie myśli lub rozwiązania?

+2

Jeśli mówisz o wielu typach zasobów i wielu aktualizacjach trafiających w ten sam punkt końcowy, całkowicie przestawiłbym się z Ember Data. – Kingpin2k

+0

Tak, wymaga to przestawienia listy bloków na stronie, a następnie zapisania ich pozycji, co oznacza aktualizację wszystkich bloków. Tak więc, kiedy przenosisz jeden, wszystkie one się przesuwają, co może za każdym razem wynosić od 50 do 100 poleceń PUT z powrotem do serwera. Wygląda na to, że Ember Data nie jest na to gotowy. –

+2

Zdecydowanie nie, lepiej wprowadzić własną implementację, nie powinna ona być zbyt ciężka. – Kingpin2k

Odpowiedz

0

Możesz to zrobić za pomocą DS.EmbeddedRecordsMixin. Jeśli obiekt Strona posiada wiele bloków (na przykład na podstawie Twojego komentarza), a następnie page-serializer.js wyglądałby następująco:

import DS from 'ember-data'; 

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
    blocks: { serialize: 'records' } 
    } 
}); 

Kiedykolwiek zapisać rekord stronę wszystkich swoich powiązanych bloków zapisy zostaną zawarte w tym wniosku postawić .

Zobacz dokumentację here.

+0

To może być teraz sytuacja, ale przestałem używać Embera, ponieważ jest on zbyt duży i skomplikowany do pracy. Czuję, że to znowu Sproutcore. –

+0

Bez obaw. Pomyślałem, że inni ludzie mogą się z tym spotkać. – andorov

Powiązane problemy