什么json结构的ember-data“findMany”必须正确地侧载?

时间:2012-10-01 19:20:18

标签: ember.js ember-data

我第一次与ember-data建立了很多关系并且总是很有趣

  

"未捕获错误:断言失败:您的服务器返回哈希值   键0但你没有映射"

这通常意味着我没有把json结构放在我称之为" ember"友好的格式。

我正在使用django rest框架为django构建我自己的REST适配器,所以我很好奇这应该是什么样的侧载而没有错误。

目前json的回归看起来如下(显然没有回到它的会议,但也许ember已经知道如何连接它?)

  

[{" id":2," name":" FooBar"}]

模型看起来像这样

CodeCamp.Session = DS.Model.extend({
    id: DS.attr('number'),
    name: DS.attr('string'),
    room: DS.attr('string'),
    desc: DS.attr('string')
});                 

CodeCamp.Speaker = DS.Model.extend({
    id: DS.attr('number'),
    name: DS.attr('string'),
    session: DS.belongsTo('CodeCamp.Session')
}); 

CodeCamp.Session.reopen({
    speakers: DS.hasMany('CodeCamp.Speaker')
});

提前谢谢

1 个答案:

答案 0 :(得分:1)

json结构应如下所示

{ speakers: [{ id: 2, name: "FooBar" }] }

发现此提交显示我只需要将json包装在命名的dict

https://github.com/Kurki/data/commit/f59ad5bc9718634b6f3d59356deae0bf97a1bbd5

所以这是我的django适配器中的自定义json方法

 findMany: function(store, type, ids) {
            var root = this.rootForType(type), plural = this.pluralize(root), json = {};
            this.django_ajax(this.buildURL(root, ids), "GET", {
                success: function(pre_json) {
                    json[plural] = pre_json;                                                                       
                    this.sideload(store, type, json, plural);
                    store.loadMany(type, json[plural]);
                }
            });
        }