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!
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 laprojectCollection
porprojectSlug
y luego filtra lajobsCollection
porjobSlug
. La consulta solo devuelve el campojobSlug
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.