2014-04-22 15 views
8

Có cách nào tốt hơn để trả lại (các) bản ghi sau khi DS.Store#pushPayload được gọi không? Đây là những gì tôi đang làm ...Trả lại (các) bản ghi sau khi lưu trữ pushPayload gọi

var payload = { id: 1, title: "Example" } 
store.pushPayload('post', payload); 
return store.getById('post', payload.id); 

Nhưng, với thường lệ DS.Store#push bạn sẽ nhận được bản ghi được chèn trả về. Sự khác biệt duy nhất giữa hai điều, từ những gì tôi có thể nói, là DS.Store#pushPayload sẽ tuần tự hóa dữ liệu tải trọng với bộ nối tiếp chính xác.

Trả lời

5

DS.Store#pushPayload có thể lấy một mảng của các mục, không chỉ một và có thể chứa dữ liệu phụ. Nó xử lý một tải trọng đầy đủ và dự kiến ​​phím gốc trong payload:

{ 
    "posts": [{ 
    "id": 1, 
    "title": "title", 
    "comments": [1] 
    }], 
    "comments": [ 
    //.. and so on ... 
    ] 
} 

DS.Store#push hy vọng một hồ sơ duy nhất mà đã được bình thường và không chứa dữ liệu phía nạp (thông báo không có chìa khóa root):

{ 
    "id": 1, 
    "title": "title", 
    "comments": [1] 
} 

Vì lý do này, nó có ý nghĩa đối với push để trả về bản ghi, nhưng đối với pushPayload để không trả lại gì.

Khi bạn sử dụng pushPayload, một tra cứu thứ hai của store.find('post', 1) (hoặc store.getById('post', 1)) là con đường để đi, tôi không tin rằng có một cách tốt hơn .

+0

Vâng, đó là loại suy nghĩ của tôi khi nhìn xung quanh mã dữ liệu ember. Cảm ơn! – tonycoco

3

Kể từ this PRpushPayload hiện có thể trả lại một mảng tất cả các bản ghi được đẩy vào cửa hàng, sau khi bật 'ds-pushpayload-return'feature flag.

Hiện tại, tính năng này không có sẵn trong một tiêu chuẩn hoặc beta release-- bạn sẽ phải sử dụng

"ember-data": "emberjs/data#master", 

(ví dụ: Canary) trong package.json của bạn để truy cập vào nó. Tôi không chắc chắn khi nào tính năng này thường có sẵn.

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