Apollo GraphQL: как вставить измененный объект по правильному индексу в существующий массив?
У меня есть subscriptionObserver, включая следующее:
return update(
previousResult,
{
ApptsForCurrentUser: {
$push: [newAppt],
},
}
);
Новый элемент, который поступает по подписке, должен быть вставлен в массив ApptsForCurrentUser в порядке сортировки по дате. Это многомерный массив, и я могу отсортировать его с помощью $apply
функция.
Есть ли синтаксис для $push newAppt
в массив до передачи массива в $apply
функция, которая будет сортировать это?
Или я должен сделать что-то подобное?
(Еще не проверено):
var newResult = clonedeep(previousResult); //lodash
newResult.push(newAppt);
newResult.sort(myCustomSortFunction);
const newResultAsAConst = clonedeep(newResult);
return update(
previousResult, newResultAsAConst
);
1 ответ
Решение
Основываясь на советах @Sacha, я смог решить эту проблему с помощью этого кода:
import update from 'immutability-helper';
[.....]
const resultWithNewApptAdded = update(previousResult, {getAllApptsForCurrentUser: {$push: [newAppt]}});
//getAllApptsForCurrentUser contains unsorted list of appts
resultWithNewApptAdded.getAllApptsForCurrentUser = resultWithNewApptAdded.getAllApptsForCurrentUser.sort(mySortFunction);
return resultWithNewApptAdded;