Estoy usando gatsby con wordpress para mostrar eventos de la API del calendario de eventos de wordpress. Estoy usando el complemento gatsby-source-tribe-events para acceder al campo allTribeEvents allTribeEvents. El problema es que si no tengo eventos publicados en wordpress, el campo allTribeEvents no se crea y luego, si ejecuto mi consulta de graphql en gatsby, obtengo
Cannot query field "allTribeEvents" on type "Query"Entonces, mi problema es cómo verificar si el campo existe en graphql y consultar condicionalmente en función de él.
Mi código :
Reaccionar componente para mostrar eventos:
export default function Events() { const data = useStaticQuery(graphql` query EventsQuery { allTribeEvents { ... } }`); //then I return my component based on the data } Entonces, el punto es que si no existen publicaciones, "allTribeEvents" no se crea en grapqhl y aparece un error
Entonces, mi problema es cómo verificar si el campo existe en graphql y consultar condicionalmente en función de él.
Respuesta corta, no puedes. Esencialmente porque cuando consulta algo, espera algún resultado. El problema aquí es que debido al flujo de trabajo definido (WordPress -> Gatsby -> creación de nodos GraphQL), los pasos están interrumpidos.
La solución ideal en estos casos es definir una definición de esquema GraphQL personalizada que lo ayudará a decirle a Gatsby que allTribeEvents puede ser null .
Otra posible solución (mucho menos limpia) es crear un evento de tribu vacío (quizás con espacios vacíos o con algún tipo de campo definido) y tratarlo en el front-end para evitar imprimirlo (supongamos que tiene un evento llamado "- ", si encuentra ese campo en la consulta de GraphQL, fíltrelo).