2013-06-13 18 views
8

Tôi muốn tận dụng cả Bộ lưu trữ cục bộ Ember (LSAdapter) và Bộ điều hợp REST Ember (RESTAdapter), để có cơ sở dữ liệu tập trung cho tất cả người dùng trong khi tránh gửi một yêu cầu Ajax cho mỗi hành động của người dùng.Làm thế nào để Bộ điều hợp lưu trữ cục bộ Ember (LSAdapter) hoạt động với Bộ điều hợp REST Ember?

Cụ thể, tôi muốn:

  1. Điền vào LSAdapter với dữ liệu từ máy chủ.
  2. Tất cả thay đổi mà người dùng thực hiện được cập nhật lên LSAdapter. (Tôi biết cách thực hiện bước này)
    (Để chuẩn bị cho # 3, tôi có thể có một mô hình lưu nhật ký trong LSAdapter của tất cả các bản cập nhật)
  3. Sau khi n phút, dữ liệu cập nhật LSAdapter được gửi trở lại máy chủ.

Máy chủ phụ trợ của tôi KHÔNG PHẢI, vì vậy hãy trả lời chung chung.

Có thể sử dụng BOTH LSAdapter và RESTAdapter trong ứng dụng Ember không? Nếu có, vui lòng cung cấp mẫu mã về cách thiết lập.
Tôi cũng sẽ đánh giá cao nếu bạn cung cấp mẫu mã cho các bước 1 và 3, về cơ bản, cơ sở dữ liệu có thể nói chuyện với bộ nhớ cục bộ và ngược lại như thế nào.


Nếu không thể có cả LSADapter và RESTAdapter, tôi có thể làm gì để hoàn thành bước 1 và 3?

Chỉ nhận được xung quanh tôi có thể nghĩ đến là thiết lập cửa hàng ứng dụng Ember làm RESTAdapter, nhưng sau đó gọi trực tiếp Web Storage localstorage trong ứng dụng của tôi, không gọi nó từ LSAdapter. Hãy cho tôi biết nếu có một cách dễ dàng hơn hoặc được xây dựng trong.

Trả lời

2

Sau khi đọc ý kiến ​​DS.Store Ember dữ liệu, nó trông giống như nó có thể là có thể sử dụng 2 adapters at once:

  1. Bạn có thể lấy mẫu từ các cửa hàng theo nhiều cách. Để lấy một kỷ lục cho một id cụ thể, sử dụng DS.Model 's find() phương pháp:

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

  2. Nếu ứng dụng của bạn có nhiều DS.Store trường (một trường hợp bất thường), bạn có thể xác định các cửa hàng nên được sử dụng:

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

tôi sẽ cập nhật câu trả lời này nếu tôi cố gắng nó ra và làm cho nó hoạt động.


Cập nhật 1:

Kiểm tra mã trong UPDATED for Additional question nơi cả hai FixtureAdapterRestAdapter được gọi.

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

như câu hỏi trên cũng có thể áp dụng cho yêu cầu của tôi. Vẫn còn câu hỏi vẫn như cũ. Yêu cầu là mô hình _Product_ nên hành động 'Mô hình RESTAdapter' trong khi tìm nạp dữ liệu từ máy chủ và hành động' LocalStorageAdapter Model' trong khi xử lý việc quản lý dữ liệu phía máy khách. –

Các vấn đề liên quan