0

私のバックエンドはリクエストに応答しfind allます:

User.find();

このような

{ 'users' : [ user1_obj, user2_obj ] }

Ember-data はそれについて満足しています。ここで、単純な単一オブジェクトの検索を行うと、次のようになります。

User.find('user1');

次のいずれかを返すようにバックエンドを構成しようとしました:

user1
{ 'user1' : user1_obj }
{ 'user' : { 'user1' : user1_obj } }
{ 'user' : user1_obj }

しかし、それらのどれも機能していません。find("obj-id")リクエストに応じてバックエンドから何を返す必要がありますか? JSON ROOTに関するドキュメントによると、正しい形式は次のようになります。

{ 'user' : user1_obj }

Ember はそれについて不平を言うことはありませんが、処理された Ember オブジェクトは次のような非常に奇妙な構造を持っています。

オブジェクト再帰

ご覧のとおり_reference.record、トップレコードを参照しています。また (ここには示されていません)_dataフィールドは空です。

その奇妙なネスティングの原因は何ですか?

編集

彼の回答で mavilein によってリンクされているように、JSON API は、単一のリソースに別の形式を使用することを提案しています。

{ 'users' : [user1_obj] }

つまり、複数のリソースと同じ形式です。Emberがそれを飲み込むかどうかわからないので、今確認します.

4

2 に答える 2

1

この仕様に従って、次のことが疑われます。

{ 
 'users' : [{
   "id": "1",
   "name" : "John Doe"
  },{
    "id": "2",
    "name" : "Jane Doe"
  }]
}

単一のリソースの場合、仕様には次のように記載されています。

単一のリソースは JSON オブジェクトとして表されます。ただし、それらはまだ配列内にラップされています。

{ 
 'users' : [{
   "id": "1",
   "name" : "John Doe"
  }]
}
于 2013-08-21T11:33:22.583 に答える
1

使用User.find()すると、複数形化された rootKey と、コンテンツ内の要素の配列が期待されます。応答形式は次の json です。

{
  users: [
    { id: 1, name: 'Kris' },
    { id: 2, name: 'Luke' },
    { id: 3, name: 'Formerly Alex' }
  ]
}

rootKeyUser.find(1)が単数形で、オブジェクトが 1 つだけの場合:

{
  user: {
    id: 1, name: 'Kris'
  }
}

これがこの動作を示すデモです

于 2013-08-21T16:54:38.380 に答える