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;
Другие вопросы по тегам