1

我正在做我的第一个 hasMany 与 ember-data 的关系,并且总是很有趣

“未捕获的错误:断言失败:您的服务器返回了带有密钥 0 的哈希,但您没有映射”

这通常意味着我没有我所谓的“ember”友好格式的 json 结构。

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

目前返回的 json 如下所示(显然没有与它的会话相关联,但也许 ember 已经知道如何连接它?)

[{“id”:2,“名称”:“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')
});

先感谢您

4

1 回答 1

1

json结构应该是这样的

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

发现这个提交表明我只需要将我的 json 包装在一个命名的字典中

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]);
                }
            });
        }
于 2012-10-01T19:30:39.553 回答