gpt4 book ai didi

normalizr - 如何获取对 normalizr 中嵌套实体的引用?

转载 作者:行者123 更新时间:2023-12-02 01:18:07 24 4
gpt4 key购买 nike

我正在规范化一个一级嵌套批处理列表。第一级地段称为主人,嵌套的是奴隶。

// my schema
const lot = new schema.Entity('lots');
const lots = new schema.Array(lot);
lot.define({slaves: lots});

// my data
const list = [
{
id: 1,
name: 'Lot #1',
slaves: [
{
id: 2,
name: 'Lot #2'
}
]
}, {
id: 4,
name: 'Lot #4',
slaves: []
}
];

normalize(list, lots);

我明白了:

{
entities : {
lots: {
'1': {
id: 1,
name: 'Lot #1',
slaves: [2]
},
'2': {
id: 2,
name: 'Lot #2'
},
'4': {
id: 4,
name: 'Lot #4',
slaves: []
}
}
},
result : [1, 4]
}

这有什么不妥。但我想在标准化结果中添加更多内容,但我不知道该怎么做。

  • 在规范化的奴隶上拥有主人的批号
  • 结果中还有一个奴隶 ID 数组

所以前面的例子会像这样规范化:

{
entities : {
lots: {
'1': {
id: 1,
name: 'Lot #1',
slaves: [2]
},
'2': {
id: 2,
name: 'Lot #2',
master: 1
},
'4': {
id: 4,
name: 'Lot #4',
slaves: []
}
}
},
result : {
masters: [1, 4],
slaves: [2],
}
}

这可以用 normalizr 实现吗?

最佳答案

Have the master lot id on the normalized slaves

这绝对可以使用自定义 processEntity 函数。有一个 example here .简而言之:

const processStrategy = (value, parent, key) => ({
...value,
master: key === 'slaves' ? parent.id : undefined
});
const lot = new schema.Entity('lots', { processStrategy });

An array of slaves id's also on the result

这是不可能的。 结果 始终取决于传递给 normalize 的条目架构。

关于normalizr - 如何获取对 normalizr 中嵌套实体的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41618858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com