Как вы создаете безграничный элемент graphql в Гэтсби? - PullRequest
0 голосов
/ 04 апреля 2020

Возможно, заголовок пропущен, но я не совсем уверен, как правильно задать этот вопрос. Вот проблема: я хотел бы запросить у моего собственного API (еще не создан, поэтому я сделал данные заполнителя) глобальные параметры, которые могут измениться в будущем, и мне нужно будет только перестроить веб-сайт, а не редактировать его вручную, я хочу создать исходный узел с именем CmsSettings и передать его в GraphQL (структура, аналогичная site.siteMetadata), но я не знаю, как мне этого добиться. До сих пор я добился создания исходного узла allCmsSettings, в котором мои данные были бы объектами в массиве узлов.

exports.sourceNodes = ({ actions, createNodeId, createContentDigest }) => {
  const { createNode } = actions;
  const myData = {
    key: 123,
    app_title: `The foo field of my node`,
    ...
  }

  const nodeContent = JSON.stringify(myData);

  const nodeMeta = {
    id: createNodeId(`my-data${ myData.key }`),
    parent: null,
    children: [],
    internal: {
      type: `CmsSettings`,
      mediaType: `text/html`,
      content: nodeContent,
      contentDigest: createContentDigest(myData)
    }
  }

  const node = Object.assign({}, myData, nodeMeta);
  createNode(node);
}

Вот запрос, используемый для получения данных исходного узла

allCmsSettings {
    edges {
      node {
        id
        app_title
        ...
      }
    }
  }

Создание запроса приводит к массиву результатов (который, как я знаю, является результатом создания узлов источника), но я хотел бы создать этот источник, чтобы я мог запросить его следующим образом:

CmsSettings {
  app_title
  app_keywords
  app_descriptions
  app_logo_path
  brand_name
  ...
}

Ты понял. Я просматривал API узла gatsby, но не могу найти, как этого добиться. Спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 апреля 2020

Не берите в голову, ответ довольно прост, если вы новичок в gatsby, как и я, экспорт sourceNodes создаст для вас 2 поля graphql со всем префиксом и исходным узлом верблюжьего дела. То, что я хотел сделать, уже есть и доступно для запроса с

cmsSettings {
  app_title
  app_keywords
  app_descriptions
  app_logo_path
  brand_name
  ...
}

Обратите внимание на строчную букву, даже если она была объявлена ​​как CmsSettings. Кажется, что Гэтсби действительно делает несколько магов c под капотом.

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