如何在normalizr函数中合并相似的值?

时间:2016-06-13 15:55:50

标签: reactjs redux react-redux normalizr

我有像这样的服务器的异常响应

[
   {
      id: 1,
      name: "Alexandr",
      children: [
         {
            id: 2,
            name: "Stephan"
         },
         {
            id: 3,
            name: "Nick"
         }
      ]
   },
   {
      id: 4,
      name: "David",
      children: [
         {
            id: 3,
            name: "Nick"
         },
         {
            id: 6,
            name: "Paul"
         }
      ]
   }
]

我想将这种回应标准化,以便与所有人接受一种用语。所以,我使用normalizr go flat this

const people= new Schema('people');
people.define({
    Children: arrayOf(people),
    NotOwnChildren: arrayOf(people)
});
let normalized = normalize(response.data, arrayOf(people));

但这样做我得到一个错误 “当合并两个人时,在他们的”儿童“价值中发现了不平等的数据。使用较早的价值。” 如何调整normalizr以合并具有相同ID的人(更新具有最新数据的实体)?

1 个答案:

答案 0 :(得分:3)

看起来你得到两个people,其中一个键的值不同(我假设您的示例输入被截断)。

对于Normalizr @ 2:

您可以使用自定义implementation of map功能手动解决问题。

对于Normalizr @> = 3.0.0,您需要使用mergeIntoEntity