我现在已经尝试了一段时间来更改模型的主键以使用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'
});
答案 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的示例: