嵌入式记录在ember-data 1.0 beta中

dan*_*ast 6 ember.js ember-data

我的记录并不平坦.他们有这种结构:

{
    'type' : 'node',
    'properties' : {
        'name' : 'sfddsadfsd',
        'xxx'  : 'sadfdsf',
    },
    'outputs' : {
        'fghdf' : 'sadfdsf',
        'xxxx'  : 'sdfsd',
    }
}
Run Code Online (Sandbox Code Playgroud)

你明白了.那些字段(propertiesoutputs)不引用sideloaded记录; 相反,它们是我记录的一部分(在我的CouchDb数据库中).我做到了这一点(在了解这是一个犯罪数据标准之前),因为它是一种在文档中组织大量属性的便捷方式 - CouchDb用于记录的术语.这个名字也说明了为什么你想要在你的记录中有结构:因为文档可以变得很大,因此你需要一些组织结构来让你的生活更轻松(或者我认为,在碰到ember-data之前).

我很高兴使用嵌入式属性和以前版本的ember-data对这些记录进行建模.现在,似乎ember-data已经放弃了对嵌入式记录的支持.有一个建议实施extractSingle和做一些时髦的东西mapProperty('id');

好吧:因为它们是我记录的一部分,所以嵌入的属性/输出没有记录ID.节点外部根本没有属性输出的概念.它们不是具有ID的独立数据:它们只是节点的一部分.

以前我有以下模型定义:

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'}
});
Run Code Online (Sandbox Code Playgroud)

(outputs是的一部分 NodeMixin)

使用ember-data 1.0 beta对我进行建模有哪些选择?我不知道如何处理这些模型,我有十几个模型.将我的记录结构推送到余烬数据是很困难的,现在...... 噗噗噗噗,努力消失了,它再也不起作用了.

Jer*_*een 5

如果您只想使用propertiesoutputs作为原始JSON数据,您可以将它们声明为非类型DS.attr,它们将按原样传递.

SettingsApp.Node = DS.Model.extend(SettingsApp.NodeMixin, {
    properties : DS.attr(),
    outputs : DS.attr()
});
Run Code Online (Sandbox Code Playgroud)