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