加载json时出现Ember.js和Ember数据错误

Ember.js and ember-data error loading json

本文关键字:Ember js 数据 错误 json 加载      更新时间:2023-09-26

我收到错误

Uncaught TypeError: Object #<Object> has no method 'map' 

当使用ember数据尝试从我的api加载json时。

App = Ember.Application.create({});
App.Student = DS.Model.extend({
    primaryKey: 's_id',
    s_id: DS.attr('integer'),
    surname: DS.attr('string')
});
App.Student.reopenClass({
    url: 'api/student.php'
})
App.adapter = DS.Adapter.create({
    findAll: function(store, type) {
        var url = type.url;
        console.log(type.url);
        jQuery.getJSON(url, function(data){
            store.loadMany(type, data);
        });
    }
});
App.store = DS.Store.create({
    revision: 4,
    adapter: App.adapter
});
App.students = App.store.findAll(App.Student);

我已经确定JSON是正确的格式,但没有用;有什么想法吗?

感谢

我发现,当使用自定义适配器时,最好在App.Adapter中定义所有方法(findAll、find、createRecord、createRecords等),以避免抛出错误。你可能会认为,逐步实现这些方法是控制应用程序中发生的事情的最佳方式,但如果你这样做,默认适配器会跳进来。

还要检查json响应的正确格式

paudechov在上面的评论中回答了这个问题:

我想我知道发生了什么——DS.RestAdapter确实假设作为json根的复数形式在其实现中findAll,但如果你需要这个,你应该模仿这个实现,或者只使用/扩展内置的。

因为json的根是命名的,所以我可以调用data.student来正确地调用loadMany。