Ember-Data "Findmany"が正しくサイドローする必要があるJSON構造は何ですか?

StackOverflow https://stackoverflow.com//questions/12679613

  •  12-12-2019
  •  | 
  •  

質問

Ember-Dataとの最初のハメーリランダイをやっていて、常に楽しいを襲っています

"アカウントのエラー:アサーションに失敗しました:あなたのサーバーはハッシュを返しました キー0ですが、マッピングがありません "

これは通常、私が「Ember」フレンドリーフォーマットを呼んでいるものにJSON構造を持っていないことを意味します。

Django REST Frameworkを使用してDjangoのための私自身の休憩アダプタを構築しているので、これがエラーなしでサイドロードのようになるべきものが興味があります。

現在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')
});
.

事前にありがとう

役に立ちましたか?

解決

JSON構造はこののように見えるべきです

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

このコミットを見つけたと、名前付きDICT の中にJSONを包む必要があることを示すコミットが見つかりました

https://github.com/kurki/data/commit/F59AD5BC9718634B6F3D59356DEAE0BF97A1BBD5

だから私のDjango Adapter にある私のカスタム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]);
                }
            });
        }
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top