【问题标题】:Why denormalize not return nested object?为什么非规范化不返回嵌套对象?
【发布时间】:2019-10-11 01:45:20
【问题描述】:

我使用来自normalizr 包的denormalize 作为以下代码:

import { normalize, schema, denormalize } from 'normalizr';

const categoriesData = [
  { id: 1, name: 'category-1' },
  { id: 2, name: 'category-2' },
  { id: 3, name: 'category-3' },
  { id: 40, name: 'category-40' },
];

const subCategoriesData = [
  { id: 1, name: 'sub-category-a', category: 1 },
  { id: 2, name: 'sub-category-b', category: 2 },
  { id: 3, name: 'sub-category-c', category: 1 },
  { id: 4, name: 'sub-category-d', category: 3 },
  { id: 500, name: 'sub-category-e', category: 40 },
]

const category = new schema.Entity('categories');
const categories = new schema.Array(category);

const subcategory = new schema.Entity('subCategories');
const subcategories = new schema.Array(subcategory);

const normalizedData = normalize(categoriesData, categories);
const denormalizedData = denormalize(normalizedData.result, categories, normalizedData.entities);

console.log({ normalizedData });
console.log({ denormalizedData });

const normalizedData2 = normalize(subCategoriesData, subcategories);
const denormalizedData2 = denormalize(normalizedData2.result, subcategories, normalizedData2.entities);

console.log({ normalizedData2 });
console.log({ denormalizedData2 });

denormalizedData2 的输出是

{id: 1, name: "sub-category-a", category: 1},
...

而我期待的是:

{id: 1, name: "sub-category-a", category: { id: 1, name: 'category-1' } },
...

如何使用normalizr实现目标?

【问题讨论】:

  • 因为这里没有将categoriesData 带入denormalizedData2 的代码。
  • 我编辑我的问题。

标签: javascript redux normalization normalizr


【解决方案1】:

老问题,但万一有人需要答案。 您的架构是错误的。 而不是

const subcategory = new schema.Entity('subCategories');

你应该写

const subcategory = new schema.Entity('subCategories', { category: category });

这意味着子类别具有category 属性,由category 架构描述。

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2017-05-02
    • 2016-11-15
    • 2019-09-04
    • 1970-01-01
    • 2017-10-27
    • 2021-03-19
    • 2018-03-02
    • 2017-12-23
    相关资源
    最近更新 更多