getContentList
La función getContentList
obtiene una lista de contenidos de un proyecto.
Esta función es útil para obtener todos los contenidos o se puede filtrar por un modelo específico.
Por ejemplo, si tienes un modelo llamado post
, puedes usar esta función para obtener todos los contenidos de ese modelo.
Ejemplo:
// Usando el cliente que ya hemos creado previamenteconst postList = await client.getContentList({ contentType: 'post' });console.log(postList);
Interfaz
La función getContentList
acepta de forma opcional
un objeto de QueryParams
como parámetro y devuelve una promesa que se resuelve con una lista de contenidos.
export interface ApiClient { getContentList: <Model>(queryParam?: QueryParams<Model>) => Promise<Model[]>; // ... otros métodos}
Parámetros
queryParam
: Un objeto que contiene los parámetros de consulta para filtrar la lista de contenidos. Este parámetro es opcional y si no se proporciona, se devolverá una lista de todos los contenidos del proyecto.
interface QueryParams { id?: Filter; contentType?: Filter; language?: Filter; 'fields.${string}'?: Filter; // Permite filtrar por valores específicos de campos // Por ejemplo: 'fields.slug': 'my-post'}
nombre | descripción |
---|---|
id | El campo id del contenido a recuperar. Este filtro es útil cuando se quiere recuperar una lista de contenidos pero se conoce los ids de éstos.Por ejemplo: client.getContentList({ id: { in: ['1', '2', '3']}) |
contentType | El modelo del contenido que queremos recuperar. Por ejemplo: client.getContentList({ contentType: 'post' }); |
language | El idioma del contenido que queremos recuperar. Cuando aplicamos este filtro, solamente devolverá los campos del modelo en el idioma seleccionado y descartará los demás. Por ejemplo: client.getContentList({ language: 'es' }); |
fields.${string} | Permite filtrar por valores específicos de campos. Ejemplos: client.getContentList({ 'fields.slug': 'my-post' } }) client.getContentList({ 'fields.title': { in: ['Hello World', 'Hola Mundo'] } }) Recupera contenidos con campos que coincidan con los valores especificados. |
type Filter = | string | { in?: string[]; // A futuro se añadirán más filtros };
nombre | descripción |
---|---|
string | Filtra el contentido donde el parámetro es igual a este valor.Por ejemplo: client.getContentList({ contentType: 'post' }) Recupera una lista de contenidos cuyo modelo es igual a post |
in | Filtra el contenido donde el parámetro contiene alguno de estos valores.Por ejemplo: client.getContentList({ language: { in: ['es', 'en'] } }) Recupera una lista de contenidos filtrando los campos que coincidan con es y/o en |
Salida
La función getContentList
devuelve una lista de contenidos (filtrados o no). Esta lista es un array de objetos que representan los valores del contenido que los usuarios definen en su proyecto en Content Island.
Ejemplo:
import { createClient } from '@content-island/api-client';
// ... código de inicialización del cliente
// Tu modelo Post definido en Content Islandinterface Post { id: string; // Id del contenido title: string; // Campo definido en el modelo body: string; // Campo definido en el modelo order: number; // Campo definido en el modelo language: 'es' | 'en'; // o cualquier otro idioma que tengas definido en tu proyecto}
const postList = await client.getContentList<Post>({ contentType: 'post' });console.log(postList);/* [ { id: '1', title: 'Hola Mundo', body: 'Este es el cuerpo del post en markdown.', order: 1, language: 'es', }, { id: '2', title: 'Segundo Post', body: 'Este es el segundo post en markdown.', order: 2, language: 'es', } ]*/
Puedes ver que el contenido ya está mapeado a su modelo correspondiente y puedes acceder a los campos directamente sin tener que hacer un mapeo manual.
getContentList
utiliza la función mapContentToModel por debajo para mapear el contenido a su modelo, visita esa sección para más información sobre cómo funciona el mapeo de contenido.