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"
         }
      ]
   }
]

このレスポンスを正規化して、すべての人との口述を受け取りたいと思います。だから、私はノーマライズを使用してこれを平らにします

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

しかし、このようにすると、「2人をマージすると、「子供」の値に等しくないデータが見つかりました。以前の値を使用しています。」というエラーが表示されます。normalizr を調整して、同じ ID を持つ人をマージするにはどうすればよいですか (エンティティを最新のデータで更新します)。

4

1 に答える 1

3

peopleキーの1つに異なる値を持つ2つを取得しているようです(入力例が切り捨てられていると想定しています)。

Normalizr@2 の場合:

カスタムmergeIntoEntity関数を使用して、問題を手動で解決できます。


Normalizr@>=3.0.0 の場合、 use が必要ですmergeStrategy

于 2016-06-17T19:32:29.443 に答える