У меня возникают проблемы с пониманием того, как писать фильтры для запросов GraphQL в GatsbyJS.
Это работает:
filter: { contentType: { in: ["post", "page"] }
Мне в основном нужна обратная сторона, например:
filter: { "post" in: { contentTypes } } // where contentTypes is array
Это не работает, потому что "ИМЯ ожидается" (где "post" в моем примере).
После прохождения GatsbyJS docs Я нашел это:
elemMatch: short for element match, this indicates that the field you are filtering will return an array of elements, on which you can apply a filter using the previous operators
filter:{
packageJson:{
dependencies:{
elemMatch:{
name:{
eq:"chokidar"
}
}
}
}
}
Отлично!Это то что мне нужно!Поэтому я пробую это и получаю:
error GraphQL Error Field "elemMatch" is not defined by type markdownRemarkConnectionFrontmatterTagsQueryList_2.
Ключевые слова, определенные в markdownRemarkConnectionFrontmatterTagsQueryList_2 :
- eq: string |null;
- ne: string |null;
- регулярное выражение: строка |null;
- glob: string |null;
- in: Array |null;
Почему я ограничен этими ключевыми словами, когда в документах упоминается больше таких ключевых слов, как elemMatch
?Почему мне не разрешено использовать структуру фильтра "element in: {array}"?
Как я могу создать этот фильтр?