如何在Redux-orm中将API响应映射到数据库状态

时间:2017-06-12 10:54:22

标签: redux redux-orm

我正在尝试直接将API响应映射到我的Redux-Orm模型。我有两个模型:

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}
  ]

}

我可以调整API响应以匹配redux-orm。

我的问题是:

我想避免使用ProductProperty.first()。set({product:Product.first}) - 这是我不想明确设置关联(子记录)并让redux-orm自动推断它们

有没有办法可以指定redux-orm可以查找的外键?

1 个答案:

答案 0 :(得分:1)

我建议你为你的API使用json api标准。

这样,在您的API返回中,您的products会有一个relationships密钥,可帮助您将其映射到included product_properties。类似的东西:

{
  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}
  ]
}

这样,您可以更轻松地创建一个标准API解析器,将您的json api资源映射到redux-orm存储。您为每个product和每个product_property创建一个redux-orm资源。比你循环产品relationships并链接它们。

希望这会有所帮助。

最佳