Посмотрим. У меня есть сайт Гэтсби, сайт песен. Каждая песня представляет собой файл Markdown с некоторыми полями frontmatter (заголовок, альбом, автор и т. Д.). У меня есть запрос GraphQL для каждой страницы автора, и он фильтрует все песни и возвращает те, которые соответствуют имени автора, которое я передаю.
Я хочу отобразить больше информации о каждом авторе, поэтому я добавил файлhors.json с именем, биографией и изображением для каждого из них и добавил отображение в свой конфигурационный файл gatsby, сопоставив автора frontmatter с именем автора (из моего JSON файл). Пока все хорошо.
Это работает на большинстве страниц, мне нужно было только обновить свои запросы от frontmatter {author} до frontmatter {author {name}}.
Но запрос страницы автора не работает. У меня есть возни в GraphiQL, и удаление фильтра заставляет его правильно возвращать все сопоставленные поля, но, конечно, мне нужен фильтр.
Я также пытался жестко закодировать значение автора, поскольку оно обычно предоставляется контекстом страницы, но оно также не работало.
Не уверен, где я иду не так: /
Я добавлю несколько соответствующих фрагментов:
Пример Frontmatter:
---
title: Adeus camarada, adeus
author: Contra Mestre Rafael
album: Quando os berimbaus se encontram
tags: ["quadra"]
date: 2019-02-02
---
Авторская запись (авторы json представляет собой их массив):
{
"name": "Contra Mestre Rafael",
"bio": "Placeholder bio.",
"image": "/images/authors/cm-rafael.jpg"
}
Запрос, который не работает:
query($author: String) {
allMarkdownRemark(
limit: 2000
sort: { fields: [frontmatter___date], order: DESC }
filter: { frontmatter: { author: { eq: $author } } }
) {
totalCount
edges {
node {
fields {
slug
}
frontmatter {
author {
name
bio
image
}
title
}
}
}
}
}
В настоящий момент allMarkdownRemark возвращает ноль, и я ожидаю, что он вернет массив узлов для каждой песни, которая соответствует автору, и сопоставленную информацию об авторе в каждой из них.