Я определил в своих типах следующий запрос. Я настроил сервер nodejs и expressGraphQL.
type Query {
product(_id: ID!): Product!
products: [Product!]!
}
Однако в моем интерфейсе я также хочу запросить конкретный продукт на основе заголовка (или уникальной строки, полученной из URL-адреса). Как я могу изменить запрос продукта, чтобы он принимал либо идентификатор, либо строку заголовка?





Вы можете создать InputType с обоими ID и String как необязательные, но потребовать InputType, а затем обработать оба случая в распознавателе.
Что-то типа:
input ProductSearch {
id: ID
title: String
}
type Product {
id: ID!
title: String
}
type Query {
product(search: ProductSearch!): Product!
products: [Product!]!
}
И в вашем распознавателе вы можете обрабатывать такие случаи, как:
Query: {
product: (source, args) => {
if (args.search.id) {
// here you have id
console.info(args.search.id)
}
if (args.search.title) {
// here you have title
console.info(args.search.title)
}
}
}
Надеюсь, поможет.
Да
input, это именно то, что я искал! Спасибо!