Ember:使用FixtureAdapter更改模型的主键

时间:2014-05-19 11:23:35

标签: javascript json ember.js ember-data primary-key

我现在已经尝试了一段时间来更改模型的主键以使用ember-data存储。我有一个名为'Addon'的装置,它没有'id'字段,但它们有'artifactId'字段。我已经找到了解决这个问题的多个建议,但到目前为止还没有任何建议,似乎很多都已经过时了。似乎最近的做法是:

App.Adapter.map('App.Addon', {
  primaryKey: 'artifactId'
});

这只是给了我“Uncaught TypeError:无法读取未定义的属性'map'”。我是否必须首先以某种方式初始化地图?我在其中找到的大多数示例都使用RESTAdapter - 它只在那里工作吗?

我的app.js整体看起来像这样:

window.App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter.extend();
App.Adapter.map('App.Addon', {
  primaryKey: 'artifactId'
});

1 个答案:

答案 0 :(得分:2)

我认为,您无法使用FixtureAdapter的当前默认值更改模型的primaryKey。

FixtureAdapter的目的不是提供类似于服务器API的JSON对象,默认情况下,灯具应该是标准化形式,因为在您的应用或视图中,您将访问DS.Model的实例, primaryKey始终为 id

{{#with model}}
      model({{id}}): {{name}}
 {{/with}}

您的服务器可以提供任何primaryKey属性,因此只有在使用您自己的适配器时,您必须设置模型序列化程序,以便它可以将primaryKey序列化为模型属性 id

container.register('serializer:user', DS.RESTSerializer.extend({
  primaryKey: 'artifactId'
}));

下面一个可以使用RESTAdapter或FixtureAdapter的示例:

http://emberjs.jsbin.com/batih/1/edit