Поле Error GraphQL «изображение» типа «Файл» должно иметь выбор подполей.Вы имели в виду "image {...}"? - PullRequest
0 голосов
/ 15 февраля 2019

Я создаю сайт с помощью gatsby и Netlify CMS.Я использовал Gatsby Site Starter.

Я продолжаю получать изображение "Поле ошибки GraphQL" типа "Файл", должно иметь выбор подполей. Вы имели в виду "изображение {...}"? "ошибка при попытке развертывания в Netlify.На localhost все работает отлично, но с изображениями что-то не получается.Я посмотрел примеры, представленные на странице Netlify CMS, и нашел кого-то с точно такой же настройкой, виджет списка (действующий как галерея) с изображением и описанием внутри, здесь .

config.yml

backend:
  name: git-gateway
  repo: grantballmer/gatsby-starter-netlify-cms
  branch: master

media_folder: static/img
public_folder: /img

collections:

  - name: "gallery"
    label: "Gallery"
    folder: "src/pages/services"
    create: true
    fields: 
      - { label: "Template Key", name: "templateKey", widget: "hidden", default: "gallery" }
      - {label: "Title", name: "title", widget: "string"}
      - label: "Grid"
        name: "grid"
        widget: "list"
        fields: 
          - {label: "Image", name: "image", widget: "image"}
          - {label: "Band Name", name: "band", widget: "string"}`

gallery.js (файл шаблона)

import React from 'react';
import { graphql } from 'gatsby';
import Layout from "../components/Layout";
import PhotoGrid from "../components/services/PhotoGrid";

const GalleryTemplate = ({ data }) => {
  const { markdownRemark: gallery } = data;
  const images = gallery.frontmatter.grid;

  return (
    <Layout>
      <PhotoGrid images={images} />
    </Layout>
  );
};

export default GalleryTemplate;

export const galleryQuery = graphql `
  query Gallery($id: String!) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        grid {
          image 
          band
        }
      }
    }
  }
`;

/ services / photography.md

---
templateKey: 'gallery'
title: photography
grid:
  - band: chris-cordle
    image: /img/chris-cordle-lg.jpg
  - band: 'chirp '
    image: /img/chirp-lg-1-.jpg
---

1 Ответ

0 голосов
/ 15 февраля 2019

Я не работал с Netlify CMS, но похоже, что ваше изображение может быть коллекцией с подполями (пример: image { source, id .. }, в этом случае вам следует переписать запрос, подобный следующему:

export const galleryQuery = graphql `
  query Gallery($id: String!) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        grid {
          image { 
             id
             source
             ..
          }
          band
        }
      }
    }
  }
`;
...