6

我的记录并不平坦。他们有这样的结构:

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

你明白了。这些字段 (propertiesoutputs) 不引用侧载记录;相反,它们是我记录的一部分(在我的 CouchDb 数据库中)。我这样做了(在得知这是 ember-data 标准的罪过之前),因为它是一种在文档中组织大量属性的便捷方式——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'}
});

outputs是一部分 NodeMixin

使用 ember-data 1.0 beta 对此进行建模时,我有哪些选择?我不知道如何处理这些模型,我有大约十几个。将我的记录结构推入 ember-data 已经够难的了,现在……,努力了,它不再起作用了。

4

1 回答 1

5

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

SettingsApp.Node = DS.Model.extend(SettingsApp.NodeMixin, {
    properties : DS.attr(),
    outputs : DS.attr()
});
于 2013-09-10T15:49:15.890 回答