2017-06-12 10 views
0

Redux-OrmモデルにAPI応答を直接マップしようとしています。私は2つのモデルがあります:Redux-ormのデータベース状態へのAPI応答のマッピング方法

Product hasMany ProductProperties 

ProductProperty belongsTo Product 

私が受け取るAPIの応答は次のとおりです。

{ 
    products: [ 
    {name: 'P1', id: 1}, 
    {name: 'P2', id: 2} 
    ], 

    product_properties: [ 
    {name: 'Test1', id: 10, product_id: 1}, 
    {name: 'Test2', id: 11, product_id: 1}, 
    {name: 'Test3', id: 12, product_id: 2} 
    {name: 'Test4', id: 13, product_id: 2} 
    ] 

} 

私はReduxの-ORMと一致するように、APIレスポンスを微調整することができます。

私の質問は次のとおりです。

私はProductProperty.firstを(やって避けたい)セット({製品:Product.first}) - 。私は協会(子レコード)を設定する必要はありません自動的にredux-ormがそれらを推論します。

redux-ormが探すことができる外部キーを指定する方法はありますか?

答えて

1

私はあなたのAPIにjson api標準を使用することをお勧めします。

このように、APIの返品では、というキーがincludedproduct_propertiesにマップされるようになります。ような何か:あなたはあなたの再来-ORMストアにあなたのJSON APIリソースをマップする標準APIのパーサを作るため

{ 
    data: [ 
    { 
     type: 'product', 
     id: 1, 
     name: 'P1', 
     relationships: [ 
     product_property: [ 
      { 
      data: {type: 'product_property', id: 10} 
      }, 
      { 
      data: {type: 'product_property', id: 11} 
      } 
     ] 
     ] 
    }, 
    { 
     type: 'product', 
     id: 2, 
     name: 'P2', 
     relationships: [ 
     product_property: [ 
      { 
      data: {type: 'product_property', id: 12} 
      }, 
      { 
      data: {type: 'product_property', id: 13} 
      } 
     ] 
     ] 
    } 
    ], 

    included: [ 
    {type: 'product_property', name: 'Test1', id: 10}, 
    {type: 'product_property', name: 'Test2', id: 11}, 
    {type: 'product_property', name: 'Test3', id: 12} 
    {type: 'product_property', name: 'Test4', id: 13} 
    ] 
} 

そうすれば、それははるかに容易になるだろう。各productと各product_propertyのredux-ormリソースを作成します。製品relationshipsをループしてリンクするよりも。

希望すると助かります。

最高

+0

これは意味があります。しかし、私が探しているのは、APIレスポンスを整理してリレーションシップを繰り返す必要はないということです。私はforiegnキー、関連名と関連モデルを指定し、そこからredux-ormを取得しますか? – Nerve

+0

これは可能ではないと思います。 Redux-ormはすべてを単独で行うわけではありません。親と関係を作成し、それらをリンクさせる必要があります。これは、APIレスポンスからエンティティを正しく作成してリンクする必要があります。 * then *、redux-ormは検索、クエリ、および表示に役立ちます。しかし、あなたはあなたのAPIからの入力で行うべきいくつかの仕事を持っています! – guillaumepotier

関連する問題