Я согласен с ответом @ DenisCappelini.Если возможно, вы можете создать новый тип, представляющий только продукты, имеющие элемент.
Однако, если вы не хотите этого делать или просто интересуетесь тем, какСелектор уровня может знать об аргументах дочерних селекторов, вот способ сделать это:
Есть 2 способа сделать это.
Для этого:
products {
id
style_id
items(size: ["S","M"]) {
id
size
}
}
В graphql распознаватели имеют такую подпись:
(obj, args, context, info) => {}
Четвёртый аргумент info
содержит информацию обо всем запросе.А именно, он знает об аргументах дочерних селекторов.
Используйте этот пакет или аналогичный, потому что есть другие, для анализа информации для вас: https://www.npmjs.com/package/graphql-parse-resolve-info
ВышеЭто довольно много работы, так что если вы хотите сделать это вместо:
products(size: ["S","M"]) {
id
style_id
items {
id
size
}
}
Затем в вашем преобразователе для products
, вам также нужно вернуть size
.Предположим, это ваш распознаватель для products
:
(parent, args) => {
...
return {
id: '',
style_id: ''
}
}
Измените преобразователь так, чтобы он также возвращал размер, подобный следующему:
(parent, args) => {
...
return {
id: '',
style_id: '',
size: ["S", "M"]
}
}
Теперь в вашем разрешении для products.items
у вас будетдоступ к size
, вот так:
(product, args) => {
const size = product.size
}