Ошибка Gatsby GraphQL: переменная "$ slug" никогда не используется в операции "BlogPostQuery" - PullRequest
0 голосов
/ 09 сентября 2018

Я не могу получить данные моего блога Ghost с помощью Gatsby. Я использую Ghost в качестве моего бэкенда и использую пакет для получения блога Ghost в качестве источника. Проблема заключается только в получении отдельных сообщений на странице. Вот blog-post.js:

import React from "react";

export default ({ data }) => {
//   const post = data.allGhostPost.edges;
  return (
    <div>
      {/* <h1>{post.title}</h1> */}
      {/* <div dangerouslySetInnerHTML={{ __html: post.html }} /> */}
    </div>
  );
};

export const query = graphql`
  query BlogPostQuery($slug: String!) {
    allGhostPost {
        edges {
          node {
            id
            slug
            title
            html
            published_at
          }
        }
      }
  }
`;

Вот мой файл узла Гэтсби:

exports.createPages = ({ graphql, boundActionCreators}) => {
    const {createPage} = boundActionCreators

    return new Promise((resolve, reject) => {
        const blogPostTemplate = path.resolve(`src/templates/blog-post.js`)

        resolve(
            graphql(
                `
                {
                    allGhostPost(sort: { order: DESC, fields: [published_at] }) {
                      edges {
                        node {
                          id
                          slug
                          title
                          html
                          published_at      
                        }
                      }
                    }
                  }
                `
            )
            .then(result => {
                result.data.allGhostPost.edges.forEach(edge => {
                    createPage({
                        path: edge.node.slug,
                        component: blogPostTemplate,
                        context: {
                            slug: edge.node.slug
                        }
                    })
                })
                return;
            })
        )
    })
}

1 Ответ

0 голосов
/ 10 сентября 2018

Я выяснил свою проблему, и это была проблема с моими запросами. Для всех, кто работает с Ghost API. Это ответ, который вам понадобится:

query BlogPostQuery($slug: String!) {
  allGhostPost(filter: {slug: {eq: $slug}}) {
    edges {
      node {
        id
        slug
        title
        html
        published_at
      }
    }
  }
}

Позвольте мне объяснить мой ответ.

Проблема заключалась в том, что мой запрос GraphQL не работал, поскольку поле $slug не использовалось в запросе. Это просто передавалось. При этом мне пришлось немного изучить GraphQL, чтобы прийти к окончательному выводу.

Используя GraphiQL, я смог обнаружить, что allGhostPost имеет метод filter. Используя это, я смог получить правильный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...