Javascript 使用FixtureAdapter时,如何使用非“id”字段作为主键?
我已经开始使用EmberJS和Ember数据,但遇到了一个小问题 我有一个应用程序,其中我的数据源使用非id作为主键,例如/model/。在将其连接到后端之前,我一直在使用来处理事情:Javascript 使用FixtureAdapter时,如何使用非“id”字段作为主键?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我已经开始使用EmberJS和Ember数据,但遇到了一个小问题 我有一个应用程序,其中我的数据源使用非id作为主键,例如/model/。在将其连接到后端之前,我一直在使用来处理事情: App.ApplicationAdapter = DS.FixtureAdapter.extend({}) App.MyModel = DS.Model.extend({ slug: DS.attr('string'), body: DS.attr('string') }); App.MyMo
App.ApplicationAdapter = DS.FixtureAdapter.extend({})
App.MyModel = DS.Model.extend({
slug: DS.attr('string'),
body: DS.attr('string')
});
App.MyModel.FIXTURES = [{
slug: 'test-slug',
body: 'Body goes here'
}];
似乎有几个信息源解释了如何使用序列化,但它们都是围绕实际数据源工作的,并且涉及修改序列化程序;使用FixtureAdapter时未使用的内容
如果我做了一些幼稚的事情,只是把线路连接起来
// ...
App.MyModelEditRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('mymodel', params.slug)
}
});
。。。并更改模板
{{#link-to "mymodel.edit" slug}}Edit{{/link-to}}
…然后我得到这个错误:
Assertion failed: You made a request for a mymodel with id test-slug, but the adapter's response did not have any data
使用FixtureAdapter时,如何使用非“id”字段作为主键?
理想情况下,当使用FixtureAdapter或真实数据源时,是否有一个有效的解决方案
作为参考,以下是我使用的EmberJS和Ember数据的版本:
我必须回顾fixture适配器/序列化程序,但是在rest适配器/序列化程序中,您可以在序列化程序上定义主键。在应用程序中,它将被称为id,但当它反序列化/序列化时,它将转换为主键名
App.ColorSerializer = DS.RESTSerializer.extend({
primaryKey: 'piano'
});
App.Color = DS.Model.extend({
color: DS.attr()
});
例如:
App.ColorSerializer = DS.RESTSerializer.extend({
primaryKey: 'piano'
});
App.Color = DS.Model.extend({
color: DS.attr()
});