2016-06-13 1 views
2

У меня есть необычный ответ от сервера, как этогоКак слить аналогичные значения в 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 пойти квартиру это

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

но делать так я получаю сообщение об ошибке «При объединении двух людей, нашли неравные данные в своих„детях“значениях. Используя ранее значение.» Как я могу настроить normalizr для объединения людей с одинаковым идентификатором (обновлять объекты с новейшими данными)?

ответ

3

Похоже, вы получаете два people, которые имеют разные значения для одного из своих ключей (я предполагаю, что ваш пример ввода усечен).

Для Normalizr @ 2:

Вы можете использовать пользовательскую функцию mergeIntoEntity, чтобы решить проблему вручную.


Для Normalizr @> = 3.0.0, вам нужно использовать mergeStrategy.

+0

Спасибо за ур ответ –