2013-06-13 16 views
8

Chciałbym skorzystać zarówno z adaptera lokalnego lokowania pamięci (LSAdapter) Ember, jak i adapteru REST Ember (RESTAdapter), dzięki czemu istnieje scentralizowana baza danych dla wszystkich użytkowników, unikając wysyłania żądania Ajax dla każdego działania użytkownika.Jak sprawić, aby adapter pamięci lokalnej Ember (LSAdapter) działał z adapterem REST Ember?

Konkretnie chciałbym:

  1. Wypełnianie LSAdapter danymi z serwera.
  2. Wszystkie zmiany wprowadzone przez użytkowników są aktualizowane w LSAdapter. (Wiem, jak to zrobić)
    (Przygotowując się do # 3, mogę mieć model, który zapisuje log w LSAdapter wszystkich aktualizacji)
  3. Raz na n minut dane aktualizacji LSAdapter są wysyłane z powrotem do serwer.

Mój serwer zaplecza to NIE Railsy, ​​więc proszę o ogólne odpowiedzi.

Czy można używać BOTH LSAdapter i RESTAdapter w aplikacji Ember? Jeśli tak, proszę podać przykładowy kod konfiguracji.
Byłbym również wdzięczny, jeśli podasz przykład kodu dla kroków 1 i 3, mówiąc w zasadzie, jak baza danych może komunikować się z lokalnym magazynem i odwrotnie.


Jeśli nie można mieć zarówno LSADapter, jak i RESTAdapter, co mogę zrobić, aby wykonać kroki 1 i 3?

Jedyne, co mogę zrobić, to skonfigurować sklep z aplikacjami Ember jako RESTAdapter, ale potem zadzwonić pod numer Web Storage localstorage bezpośrednio w mojej aplikacji, nie wywołując go w ogóle z LSAdapter. Daj mi znać, jeśli jest łatwiejszy lub wbudowany.

Odpowiedz

2

Po przeczytaniu DS.Store komentarzy Ember Danych, wygląda to może być możliwe użycie 2 adapters at once:

  1. modeli można pobrać z magazynu na kilka sposobów. Aby odzyskać rekord zadaniu id, użyj DS.Model „s find() metody:

    var person = App.Person.find(123);

  2. Jeśli aplikacja ma wiele DS.Store instancji (nietypowy przypadek), można określające, które sklep powinien być stosowany:

    var person = store.find(App.Person, 123);

będę aktualizować tę odpowiedź, jeśli ja go wypróbować i działaj.


Aktualizacja 1:

Zapoznaj się kod w UPDATED for Additional question gdzie zarówno FixtureAdapter i RestAdapter są nazywane.

0
//define your main adapter as usual 

App.Store = DS.Store.extend({ 
    revision: 13, 
    adapter: DS.RESTAdapter.create({ 
     url: app.apiUrl, 
     namespace: app.apiNamespace 
    }) 
}); 


//App.Product for example will use the rest adapter 
App.Product = DS.Model.extend({ 
    name: DS.attr('string'), 
}); 


App.Somemodel = DS.Model.extend({ 
    name: DS.attr('string'), 
}); 

//App.Somemodel for example will use the fixture adapter 
App.Store.registerAdapter('App.Somemodel', DS.FixtureAdapter); 
+0

powyższe pytanie dotyczy również moich wymagań. Wciąż pytanie pozostaje takie samo. Wymaganiem jest _Product_ model powinien działać 'RESTAdapter Model' podczas pobierania danych z serwera i działać' LocalStorageAdapter Model' podczas obsługi zarządzania danymi po stronie klienta. –