Я использую Apollo Angular и размещаю сервер на базе GraphQL. Просьба, которую я пытаюсь выполнить, проста. Мне нужно передать объект в качестве параметра запроса моего запроса. Это моя просьба:
return this.apollo
.watchQuery({
query: this.ListQuery,
variables: {
boundaries: {
east: boundaries.east,
west: boundaries.west,
north: boundaries.north,
south: boundaries.south,
}
},
fetchPolicy: 'no-cache',
})
.valueChanges.pipe(
map(({data}: any) => data.spots ? data.spots.map((spot) => new Spot(spot)) : [])
);
Запрос определяется как:
query SpotList($boundaries: Boundaries) {
spots (boundaries: $boundaries) {
...
Моя схема на сервере определяется как:
type Query {
spot(id: String!): Spot
spots(boundaries: Boundaries): [Spot!]!
}
input Boundaries {
east: Float
north: Float
south: Float
west: Float
}
И когда моя функция распознавателя
@Query()
async spots(boundaries) {
console.info(boundaries) //return undefined
Мне интересно, разрешен ли ввод в качестве параметра в запросе, а если нет, то какую схему или практику мне следует использовать.
Если возможно, я не хочу, чтобы в моем query все аргументы были явно указаны в коде.
Спасибо !
Edit: Solved, behaviour in resolver function from Nest Query decorator which has a (object, arguments, context, info) pattern to its resolver function.
@DanielRearden да, это Nest, я думал, что Nest здесь не будет проблемой, но проблема была в сигнатуре функции резолвера.





Как я забыл упомянуть в своем вопросе, я использую серверную часть Nest, а декоратор @Query, представленный @ nestjs / graphql, дает специальную подпись функциям преобразователя.
Вы используете серверную часть Nest? Если нет, то какие библиотеки и / или фреймворки вы используете? Из вашего кода неясно.