首页 文章

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

提问于
浏览
2

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

[
   {
      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去平坦

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

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

1 回答

  • 3

    看起来你得到两个 people ,它们的一个键有不同的值(我假设你的示例输入被截断) .

    对于Normalizr @ 2:

    您可以使用自定义mergeIntoEntity函数手动解决此问题 .


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

相关问题