Есть ли способ отфильтровать массив результатов в резольвере graphql по вычисленному значению, добавленному в резолвере второго уровня?
Мой тип выглядит следующим образом (расстояние вычисляется, а не сохраняется в дБ):
type Place {
# ...
distance: Float!
# ...
}
Объявление запроса выглядит следующим образом:
type Query {
favoritePlaceList(latitude: Float!, longitude: Float!): [Place!]!
}
Мой преобразователь запросов выглядит следующим образом:
async function favoritePlaceList(_, _, context, _) {
const userId = getUserId(context);
const user = await context.db.query.user(
{ where: { id: userId } },
` { favoritePlaceList { id name description location { latitude longitude } reviewList { value } } } `);
return user.favoritePlaceList;
}
И определитель расстояния это:
function distance(parent, _, _, info) {
return calcDistanceFromGeolocations(
parent.location.latitude,
parent.location.longitude,
info.operation.selectionSet.selections[0].arguments[0].value.value,
info.operation.selectionSet.selections[0].arguments[1].value.value,
);
}
(Также я не знаю, как получить доступ к аргументам в обработчике второго уровня, это просто взлом :()