Как фильтровать по вычисленному значению в Prisma - PullRequest
0 голосов
/ 01 апреля 2019

Есть ли способ отфильтровать массив результатов в резольвере 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,
    );
}

(Также я не знаю, как получить доступ к аргументам в обработчике второго уровня, это просто взлом :()

...