2

と の 2 つのモデルがRecipeありUserます。レシピでユーザー オブジェクトを取得できません。私は何を間違っていますか?

App.Recipe.find(1).get('title') // Returns "recipe01 title". All works fine.

App.Recipe.find(1).get('user') // Returns null

user.js.coffee

App.User = DS.Model.extend
   email: DS.attr('string')
   recipes: DS.hasMany('App.Recipe')

レシピ.js.コーヒー

App.Recipe = DS.Model.extend
  user: DS.belongsTo('App.User')
  title: DS.attr('string')

私のjson配列

{
  recipe: {
    id: 1,
    title: "recipe01",
    user: {
      id: 1,
      name: "ejiqpep",
      email: "ejiqpep@gmail.com",
    }
  }
}
4

1 に答える 1

3

デフォルトでは、Ember Data は依存レコードがキーによって参照されることを想定しています。次に、余分なレコードをサイドロードするか、Ember に API エンドポイントから遅延ロードさせることができます。

{
  recipe: {
    id: 1,
    title: "recipe01",
    user_id: 1
  },
  user: {
    id: 1,
    name: "ejiqpep",
    email: "ejiqpep@gmail.com"
  }
}

ただし、レコードが埋め込まれていることをアダプタに指示することもできます。

埋め込みレコードの読み込みembedded: 'always'には 2 つのタイプがあり、Ember はオブジェクトが埋め込まれた変更を送受信します。

App.Adapter.map 'App.Recipe',
  user: 
    embedded: 'always'

またはembedded:'load'、Ember が JSON から埋め込みオブジェクトをロードしますが、変更を別のオブジェクトとして API に保存します。

App.Adapter.map 'App.Recipe',
  user:
    embedded: 'load'

3 つのオプションのうちどれを選択するかは、あなた次第です。埋め込みオブジェクトは最近実装されたばかりで、いくつかの問題があります (Github の Ember-Data の問題を参照してください) が、既存のサーバーに変更を加えることなく動作します。

于 2013-04-14T11:56:08.547 に答える