我们有一个映射以下关系的数据库:
tag
有许多campaigns
campaign
有许多tags
campaigns
和tags
之间的关系由名为campaign_tag
campaign_tag
实体具有priority
属性当我们的关联实体没有唯一的ID /值时,我们如何实现normalizr(或任何类似的库)来生成一个应用于关联实体的展平应用状态?
我见过的其他例子只有原始实体被映射出来,看起来更适合一对多或一对一的关系。他们通常会生成如下的状态树:
{
entities: {
campaigns: {
'1': { id: 1, name: 'Ace', tags: [1, 2, 3] },
...
},
tags: {
'1': { id: 1, name: 'Example Tag', campaigns: [1, 2, 3] },
...
}
},
...
}
我们的关联实体会进入entities
组吗?我们应该只添加唯一ID吗?这似乎适得其反。是否适合平息这种关系?
感谢任何帮助,谢谢。
答案 0 :(得分:1)
方案:
您可以控制API:我会发送这样的对象:
campaigns: [{
id: <id>,
name: <name>,
}],
tags: [{ id: <id>, name: <name> }],
campaign_tags: [{campaign_id, tag_id, priority}]
因此,这将易于管理并避免重复信息。使用redux connect挂载组件时,您可以创建一个选择器来填充广告系列代码,以添加到组件的属性中。
您无法控制API。在这种情况下,我需要知道从服务器获取什么类型的响应以便推荐。