2015-11-09 18 views
6

Vì vậy, giả sử bạn có một Mô hình người dùng được thiết lập thành một API khá chuẩn. Trên giao diện người dùng, bạn có một dự án Ember cũng có mô hình Người dùng đó. Cuộc gọi tạo thông thường sẽ giống như sau:Tôi có thể BẬT nhiều mô hình bằng cách sử dụng Dữ liệu Ember không?

store.createRecord('user', {email: '[email protected]'}).save(); 

Điều này sẽ gửi yêu cầu POST tới địa chỉ /api/users. Tuy nhiên, hỗ trợ API khá rộng lớn là tạo ra nhiều mô hình cùng một lúc. Vì vậy, ví dụ, thay vì cuộc gọi POST chỉ cần gửi một đối tượng duy nhất dưới user: {email: '[email protected]'} nó sẽ gửi một mảng các đối tượng như users: [{email: '[email protected]'}, {email: '[email protected]'}, ...].

Cách tôi đã thấy điều này được xử lý trong ember là chỉ thực hiện nhiều lệnh gọi khi đang chạy. Tuy nhiên, điều này là không hiệu quả khủng khiếp và tôi tự hỏi nếu Ember hỗ trợ tiết kiệm nhiều mô hình cùng một lúc? Làm thế nào bạn sẽ đạt được điều này trong Ember?

Trả lời

0

Nếu bạn hỏi cụ thể về dữ liệu Ember, tôi không biết cách nào để làm điều đó (tôi không nghĩ rằng có thể sử dụng bất kỳ khoản tiết kiệm tương đương nào() trên bộ sưu tập/mảng). Có thể có các thư viện Dữ liệu thay thế có thể hoạt động (ví dụ bạn có thể kiểm tra Orbit.JS - đó là điều mà tôi chưa làm)

Cách tôi đã thực hiện nó để có điểm cuối tùy chỉnh trên chương trình phụ trợ của tôi nhận được tải trọng JSON nhất định và tạo tài nguyên. Bạn làm điều đó bằng cách phát hành một cuộc gọi ajax thường xuyên, xem ví dụ này (từ một dự án của tôi).

Như bạn có thể thấy đây là tất cả mã tùy chỉnh, không tận dụng kho dữ liệu hoặc mô hình Ember. Cho đến nay tôi đã không tìm thấy một câu trả lời tốt hơn.

EDIT: Sau khi xem câu trả lời của andorov. Tôi quên đề cập đến điều gì đó. Tôi đang sử dụng dữ liệu Ember 2.0 (JSONAPI theo mặc định) và thuộc tính EmbeddedRecordsMixin does not work với JSON API

2

Bạn không thể lưu một loạt các mô hình trong một yêu cầu POST dữ liệu Ember duy nhất như bạn mô tả, tuy nhiên có một cách.

Bạn có thể lưu mô hình gốc mà hasMany 'user' bằng EmbeddedRecordsMixin, bao gồm id mối quan hệ hoặc bản ghi đầy đủ. Trình nối tiếp của bạn sẽ trông giống như -

import DS from 'ember-data'; 

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
    users: { embedded: 'always' }, 
    } 
}); 

Tùy thuộc vào trường hợp sử dụng của bạn, chỉ có thể tạo mô hình gốc cho mục đích này hasMany 'user'. Nếu bạn muốn sử dụng một mô hình hiện có và không phải lúc nào cũng muốn nhúng hồ sơ người dùng của mình, thì có một câu trả lời là here.

Nếu bạn quyết định lưu riêng từng mô hình, bạn sẽ muốn thực hiện users.invoke('save'), sẽ kích hoạt POST cho từng mô hình.

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