Ember Data的自定义适配器不起作用

时间:2014-04-18 18:01:25

标签: ember.js ember-data adapter

我使用本指南为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套接字是否有一个好的余烬数据适配器?

1 个答案:

答案 0 :(得分:0)

此文档指向ember-data 1.0.0-beta.6版本,似乎不正确。与此同时是fix was sent,但它只能在主分支上使用。

您可以按照新文档操作并更新代码以使用App.ApplicationAdapter

var MyAdapter = DS.Adapter.extend({
  ...
});

App.ApplicationAdapter = MyAdapter;

当然,由于空方法会收到错误,但会记录findAll