Как добавить поле JSON в Gatsby sourceNode? - PullRequest
0 голосов
/ 01 мая 2020

В моем API у меня есть layout prop с динамической c схемой, поэтому я добавляю это к sourceNode в виде строки JSON:

  for (const { path } of nodesList) {
    /* ... */

    const node = {
      id: createNodeId(`cms-${cmsNode.id}`),
      /* this prop */
      layout: JSON.stringify(layout),
      parent: null,
      children: [],
      internal: {
        content: JSON.stringify(cmsNode),
        type: 'CmsNode',
      },
    }
    node.internal.contentDigest = createContentDigest(node)
    createNode(node)
  }

Как настроить это поле для анализа JSON на уровне запроса вместо JSON.parse в компоненте страницы?

1 Ответ

0 голосов
/ 01 мая 2020

Мне нужно добавить пользовательский тип:

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions
  const typeDefs = `
    type CmsNode implements Node @dontInfer {
      id: ID!
      parent: Node
      children: [Node!]!
      ...
      layout: JSON
    }
  `
  createTypes(typeDefs)
}

и не раскручивать этот реквизит во время createNode.

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