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.

Consultando una colección dentro de otra colección basada en un slug.

Estoy utilizando Contentful para mi CMS con consultas graphql.

Actualmente, mi estructura de API es /project/:projectSlug/:jobSlug.

Tengo una colección principal (proyectos) que necesito filtrar por slug (projectSlug) y luego filtrar la colección de trabajos filtrando por slug (jobSlug).

¿Hay alguna manera de conseguir un trabajo específico y evitar transferir todos los datos y hacer la filtración en el servidor de nuevo? Si hay una solución consultando primero la colección de trabajos y usando linkedFrom, también estoy interesado en esta solución. Pero no pude hacer que funcionara.

El modelo actual hace referencia a trabajos desde el proyecto y el último recurso es cambiar el modelo.

Por favor, aconsejen si hay alguna posibilidad y cuál sería la mejor.

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de obtener un trabajo específico sin transferir todos los datos y filtrarlos en el servidor nuevamente. Una solución sería utilizar las capacidades de filtrado integradas en la API de GraphQL de Contentful.

    Suponiendo que su modelo de contenido se ve así:

    [json]

    Puede utilizar la siguiente consulta de GraphQL para recuperar un trabajo específico:

    [graphql]

    Esta consulta utiliza la cláusula where para filtrar la projectCollection por projectSlug y luego filtra la jobsCollection por jobSlug. La consulta solo devuelve el campo jobSlug para el trabajo coincidente, por lo que elimina la necesidad de transferir todos los datos y filtrarlos en el servidor nuevamente.

    En cuanto a la solución linkedFrom, puede utilizar la siguiente consulta para obtener todos los trabajos de un proyecto:

    [graphql]

    Luego, puede utilizar el argumento linkedFrom para filtrar los trabajos por su proyecto padre:

    [graphql]

    Esta consulta debería devolver el mismo resultado que la consulta anterior, pero de una manera ligeramente diferente. Tenga en cuenta que el argumento linkedFrom se utiliza para filtrar los trabajos por su proyecto padre.

    En términos de cambiar el modelo, debería ser una solución de último recurso, ya que puede tener implicaciones en la arquitectura de su aplicación y la consistencia de los datos. Por lo tanto, se recomienda probar las soluciones anteriores primero.

    ¡Espero que esto ayude! Háganos saber si tiene más preguntas.

Comments are closed.