2013-09-05 35 views
6

Hồ sơ của tôi không bằng phẳng. Họ có cấu trúc này:Bản ghi được nhúng trong dữ liệu ember 1.0 beta

{ 
    'type' : 'node', 
    'properties' : { 
     'name' : 'sfddsadfsd', 
     'xxx' : 'sadfdsf', 
    }, 
    'outputs' : { 
     'fghdf' : 'sadfdsf', 
     'xxxx' : 'sdfsd', 
    } 
} 

Bạn hiểu ý tưởng. Các trường đó (propertiesoutputs) không tham chiếu đến các bản ghi được tải trước; thay vào đó, chúng là một phần của hồ sơ của tôi (trong cơ sở dữ liệu CouchDb của tôi). Tôi đã làm điều này (trước khi biết rằng đây là một tội lỗi bởi các tiêu chuẩn dữ liệu ember) bởi vì nó là một cách tiện dụng để tổ chức nhiều thuộc tính trong một tài liệu - thuật ngữ mà CouchDb sử dụng cho các bản ghi. Tên này cũng cho thấy lý do bạn muốn có cấu trúc trong hồ sơ của mình: vì tài liệu có thể khá lớn và do đó bạn cần một số cấu trúc tổ chức để làm cho cuộc sống của bạn dễ dàng hơn (hoặc vì vậy tôi nghĩ trước khi truy cập dữ liệu ember).

Tôi vui vẻ lập mô hình các bản ghi này bằng cách sử dụng các thuộc tính được nhúng với phiên bản trước của dữ liệu ember. Bây giờ, có vẻ như dữ liệu ember có dropped support cho các bản ghi được nhúng. Có một gợi ý thực hiện extractSingle và làm một số công cụ funky với mapProperty('id');

Vâng: vì chúng là một phần của hồ sơ của tôi, các thuộc tính nhúng/đầu ra không có kỷ lục id. Chỉ đơn giản là không có khái niệm về bất động sản hoặc đầu ra bên ngoài nút . Chúng không phải là dữ liệu độc lập có ID: chúng chỉ là một phần của nút .

Trước đây tôi đã định nghĩa mô hình sau:

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

DS.RESTAdapter.map('SettingsApp.NodeProperties', { 
    name : {key: 'name'}, 
}); 

SettingsApp.Node = DS.Model.extend(SettingsApp.NodeMixin, { 
    properties : DS.belongsTo('nodeProperties') 
}); 

DS.RESTAdapter.map('SettingsApp.Node', { 
    nodeType: {key: 'type'}, 
    outputs: {embedded: 'always'}, 
    properties: {embedded: 'always'} 
}); 

(outputs là một phần của NodeMixin)

gì những lựa chọn của tôi về mô hình này với ember dữ liệu 1.0 beta? Tôi không biết phải làm gì với những mô hình này, và tôi có khoảng một tá. Thật khó để đẩy cấu trúc hồ sơ của tôi vào dữ liệu ember, và bây giờ ... puff, nỗ lực biến mất, nó không hoạt động nữa.

+0

Như đã đề cập trên TRANSITION.md: 'hỗ trợ Explicit cho hồ sơ nhúng đã biến mất cho now.' (https://github.com/emberjs/data/blob/master/TRANSITION.md#embedded-records) Hiện tại tôi không nghĩ rằng bạn có thể xử lý các bản ghi được nhúng mà không có id. Vì vậy, có đây là một loại hồi quy so với 0,13. Hãy xem thảo luận này: http://discuss.emberjs.com/t/ember-data-1-0beta-embedded-records/2359/14 – ThomasDurin

+0

Cảm ơn. Điều đó không có vẻ rất đáng khích lệ: (Bạn có biết tôi có thể tiếp tục với dữ liệu ember 0.13 và phiên bản mới nhất của ember không? Đối với những gì tôi đọc, dữ liệu ember 1.0 beta vẫn còn lỗi và có thể phải thay đổi. chờ đợi cho ember-data 1.0 trước khi đi qua nỗ lực rất lớn này – dangonfast

+0

Chắc chắn bạn có thể.Tôi nhận được cùng một vấn đề (cơ sở dữ liệu MongoDB) và tôi thực sự xem xét ở trong 0.13 cho đến khi hồ sơ nhúng được xử lý đúng cách bởi dữ liệu ember. Chúng tôi thậm chí không biết liệu tính năng này có phải là một phần của dữ liệu ember 1.0 – ThomasDurin

Trả lời

5

Nếu bạn chỉ muốn sử dụng propertiesoutputs làm dữ liệu JSON thô, bạn có thể khai báo chúng dưới dạng không được nhập DS.attr và chúng sẽ được chuyển qua.

SettingsApp.Node = DS.Model.extend(SettingsApp.NodeMixin, { 
    properties : DS.attr(), 
    outputs : DS.attr() 
});