0
我的目标是这个对象正常化嵌套实体:规范化共享当前架构
{
talks: [
{
id: 1755,
speakers: [
{
id: 1487,
name: 'John Doe',
},
],
related_talks: [{
id: 14,
speakers: [{
id: 125,
name: 'Jane Doe',
}],
event: {
id: 181,
name: 'First Annual',
},
}],
event: {
id: 180,
name: 'July Party',
},
},
],
};
到这样的结果:
{
entities: {
events: {
181: {
id: 181,
name: 'First Annual'
},
180: {
id: 180,
name: 'July Party'
}
},
speakers: {
125: {
id: 125,
name: 'Jane Doe'
},
1487: {
id: 1487,
name: 'John Doe'
}
},
talks: {
1755: {
id: 1755,
event: 181,
speakers: [ 1487 ],
related_talks: [ 14 ],
},
14: {
id: 14,
speakers: [ 125 ],
event: 180,
}
},
},
result: {
talks: [ 1755, 14 ],
},
}
如果你会发现,在related_talks
项目被处理与talk
相同。
我的模式下面的例子中,并设置如下:
const speaker = new schema.Entity('speakers');
const event = new schema.Entity('events');
export const talk = new schema.Entity('talks', {
speakers: [speaker],
event,
});
talk.define({ related_talks: [talk] });
无论我怎么努力,我不能得到的物品在related_talks
添加到result.talks
阵列。但是,它在entities
对象中。
为了适应这种情况,我的模式配置丢失了什么?
感谢您的超级快速回答 - 您能解释一下为什么我可能会_不想这样做吗?这不是一个很难的要求,但这是我期望正常工作的方式。 – vinspee
它以这种方式工作,因为这是输入的实际结果。你用一个实体来给一个数组进行标准化,所以结果是标准化的形式。 –
所以解决方案是将相关的谈话转移到谈判阵列(在API方面),并且在'talk'对象内部,将相关谈话阵列改为仅仅是每个谈话的ID?那样''会谈'阵列真的包含所有谈话? – vinspee