Я получаю отсортированный массив комментариев с сервера.Каждый комментарий имеет атрибут comment.children
, который также является отсортированным массивом других комментариев.Они могут быть вложены в глубину n
.Например:
const nestedComments = [
{
id: 1,
body: "parent comment",
children: [
{
id: 4,
body: 'child comment',
children: [
{
id: 7,
body: 'grandchild comment #1',
children: [],
},
{
id: 6,
body: 'grandchild comment #2',
children: [],
},
{
id: 5,
body: 'grandchild comment #3',
children: [],
},
]
},
{
id: 3,
body: 'second child comment',
children: []
}
],
},
{
id: 8,
body: 'parent comment #2',
children: []
},
];
Затем я использую библиотеку нормализатора, чтобы нормализовать ее следующим образом:
const commentSchema = new schema.Entity('comments');
const commentListSchema = new schema.Array(commentSchema);
commentSchema.define({children: commentListSchema});
const normalizedComments = normalize(nestedComments, commentListSchema);
Результат в значительной степени соответствует ожидаемому:
{
entities: {
// All of the comments ordered their id's, this is fine and what I want
},
results: [1,8] // understandable but not what I want
}
Итакон сохраняет порядок корневых комментариев, но ничего не делает для вложенных дочерних комментариев.Есть ли способ сделать это так, чтобы каждая группа братьев и сестер имела свой собственный массив results
?Что-то похожее на это:
results: [[1,8], [4,3], [7,6,5]];
Или, может быть, есть лучший способ сохранить эту информацию, и я также был бы рад услышать об этом.