es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DynamicZone: El campo “micro_article_container” de tipo “[StrapiArticleMicro_article_container]” debe tener una selección de subcampos.

El problema

Este error se produce cuando ejecuto gatsby build en mi proyecto:

El campo "micro_article_container" de tipo "[StrapiArticleMicro_article_container]" debe tener una selección de subcampos. ¿Quiso decir "micro_article_container { ... }"?

Mi configuración

Estoy ejecutando una instancia de strapi (v3.6.8) con el complemento Graphql junto con un frontend de gatsby.
Existe el tipo article que tiene una zona dinámica (micro_article_container) rellena con el componente micro_article.

¿Cuándo ocurre el error?

Para obtener datos de mi API de Strapi Graphql, ejecuto esta consulta:

query MyQuery2($article: String) {
strapiArticle(title: {eq: $article}) {
id
title
published_at(formatString: "DD.MMMM.YYYY", fromNow: false)
micro_article_container
}
}

La consulta funciona en el playground de graphql proporcionado. En el modo de desarrollo de gatsby, la máquina tampoco tiene problemas.
Solo cuando intento construir el proyecto de gatsby a través de gatsby build, obtengo el error mencionado anteriormente.

Al principio pensé que podía modificar la consulta para que microarticlecontainer tuviera subcampos que faltaban:

query MyQuery2($article: String) {
strapiArticle(title: {eq: $article}) {
id
title
published_at(formatString: "DD.MMMM.YYYY", fromNow: false)
micro_article_container{
title
}
}
}

Esto tampoco funciona y arroja el siguiente error:

El campo "micro_article_container" no debe tener una selección ya que el tipo "JSON" no tiene subcampos.

Puedo ver que no puedo proporcionar subcampos a microarticlecontainer porque es una matriz de objetos y tiene el tipo JSON como se muestra en el playground de graphql. Pero ¿por qué arroja un error si no estoy agregando subcampos 😀

Dado que es la primera vez que trabajo con la zona dinámica de strapi, no puedo entender qué está mal con mi consulta. Además, estoy confundido sobre por qué funciona en el modo de desarrollo pero arroja un error si quiero construirlo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    El error se produce porque micro_article_container es un array y necesitas proporcionarle a GraphQL información sobre qué tipo de datos hay dentro del array.

    Una forma de hacer esto es utilizar la sintaxis ... on para crear fragmentos en línea para cada posible tipo de componente en micro_article_container. Por ejemplo:

    query MyQuery2($article: String) {
      strapiArticle(title: {eq: $article}) {
        id
        title
        published_at(formatString: "DD.MMMM.YYYY", fromNow: false)
        micro_article_container {
          __typename
          ... on StrapiComponentExample {
            # Subcampos para StrapiComponentExample
          }
          ... on StrapiComponentAnotherExample {
            # Subcampos para StrapiComponentAnotherExample
          }
          # Agrega más fragmentos en línea para cada posible tipo de componente
        }
      }
    }
    

    Aquí, __typename se utiliza para determinar el tipo de cada componente en micro_article_container. Deberás reemplazar StrapiComponentExample y StrapiComponentAnotherExample con los nombres reales de los componentes en tu instancia de Strapi.

    Una vez que hayas proporcionado subcampos para cada posible tipo de componente en micro_article_container, el error debería desaparecer y podrás construir tu proyecto de Gatsby sin problemas.

Comments are closed.