我使用本指南为Ember数据创建自定义适配器:http://emberjs.com/api/data/classes/DS.Adapter.html
在我的app.js中,我有以下内容:
App.store = DS.Store.create({
adapter: 'MyAdapter'
});
我创建了适配器:
App.MyAdapter = DS.Adapter.extend({
createRecord: function(store, type, record) {
console.log('create');
},
deleteRecord: function(store, type, record) {
console.log('delete');
},
find: function(store, type, id) {
console.log('find');
},
findAll: function(store, type, sinceToken) {
console.log('findAll');
},
findQuery: function(store, type, query) {
console.log('findQuery');
},
updateRecord: function(store, type, record) {
console.log('updateRecord');
}
});
我创建了一个模型:
App.Post = DS.Model.extend({
title: DS.attr,
body: DS.attr,
author: DS.attr
});
然后在我的路线中:
this.store.createRecord('post', {
title: 'Rails is Omakase',
body: 'Lorem ipsum',
author: 'asd'
});
var post = this.store.find('post');
console.log(post);
不幸的是,这不起作用,因为控制台输出中有几个错误:
Assertion failed: Unable to find fixtures for model type App.Post
Assertion failed: The response from a findAll must be an Array, not null
TypeError: Cannot read property 'map' of null
。所以我的第一个猜测是,它无法找到我的自定义适配器,因为如果函数被调用(console.log('find')
...)也没有记录。文档是否是最新的?字符串MyAdapter
是否正确?不应该是这样的:
App.store = DS.Store.create({
adapter: 'App.MyAdapter'
});
没有任何作用。我做错了什么?
还有一个问题:Web套接字是否有一个好的余烬数据适配器?
答案 0 :(得分:0)
此文档指向ember-data 1.0.0-beta.6
版本,似乎不正确。与此同时是fix was sent,但它只能在主分支上使用。
您可以按照新文档操作并更新代码以使用App.ApplicationAdapter
:
var MyAdapter = DS.Adapter.extend({
...
});
App.ApplicationAdapter = MyAdapter;
当然,由于空方法会收到错误,但会记录findAll
。