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 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 的人(使用最新数据更新实体)?

4

1 回答 1

3

看起来您得到了两个people具有不同值的键之一(我假设您的示例输入被截断)。

对于 Normalizr@2:

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


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

于 2016-06-17T19:32:29.443 回答