2016-04-14 17 views
0

私は次のモデルを持っているにidプロパティが含まれます。リストに使用する "ジェネリック" モデルreferenceエンバーPOSTペイロード

  • userモデル今
    1. userは多くのdepartmentsを持つことができますそのモデルは正確にreferenceです。

      userモデルで、departmentsには多くのreferenceオブジェクトを含めることができます。

      は、私は次のことを試みたが、それを動作させることはできません。

      import DS from 'ember-data'; 
      import Ember from 'ember'; 
      
      export default DS.Model.extend({ 
          name: DS.attr('string'), 
          departments: DS.hasMany('reference') 
      }); 
      

      それは価値がある何のため、この質問は、エンバーのデータを使用してPOSTのペイロードにIDを含める必要が茎から。私の元userモデルは、このようなものです:上記のモデルと

      import DS from 'ember-data'; 
      import Ember from 'ember'; 
      
      export default DS.Model.extend({ 
          name: DS.attr('string'), 
          departments: DS.attr() 
      }); 
      

      問題、私はレコードを保存するたびに、それは彼らがすでに店舗にロードされているにもかかわらず、ペイロード内の参照のIDが含まれていません。

      userモデルのカスタムシリアライザを作成する必要がありますか?

    +1

    POSTは、まだ定義でIDを持っていない新しいレコードを作成するためのものです。 –

    +0

    こんにちは@トラザブロ。部門に必要なIDは、ユーザーレコードを作成する前にすでに取り込んでいるため、利用できます。 – yojoannn

    +0

    [次のドキュメント](https://guides.emberjs.com/v2.5.0/models/relationships/) 'DS.hasMany( 'reference')'は、1対多または多対多を宣言するのに正しいです。多くの関係。 Ember Dataに同梱されているアダプタでこの関係を処理できます。より多くのコードを提供してください。 [Ember Inspector](https://guides.emberjs.com/v2.5.0/ember-inspector/data/)で店舗内のデータがどのように見えるか、関係が正しいかどうかを確認してください。 – jelhan

    答えて

    0

    あなたは、モデル全体またはそのIDを含めるようにシリアライザを伝えることができ、それによりEmbeddedRecordsMixin.

    後にしているように聞こえます。このようなもの:

    //serializer/user.js 
    import DS from 'ember-data'; 
    
    export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
        attrs: { 
        departments: { embedded: 'always' } 
        } 
    }); 
    
    +1

    こんにちは、@ carcel。ありがとう。埋め込み: 'always''オプションで作業しました – yojoannn

    +0

    埋め込み型で答えを更新しました。 – Carl

    関連する問題