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 ContentListQueryParams como parámetro y devuelve una promesa que se resuelve con una lista de contenidos.
export interface ApiClient { getContentList: <Model>(queryParam?: ContentListQueryParams<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 ContentListQueryParams { id?: ClientFilter<string>; contentType?: ClientFilter<string>; language?: string; `fields.${string}`?: ClientFilter; // Permite filtrar por valores específicos de campos // Por ejemplo: 'fields.slug': 'my-post' includeRelatedContent?: boolean | number | 'all'; // Cuántos niveles de contenido relacionado expandir. `false` / `0` -> nada; `true` / `1` -> 1 nivel (legacy); `2..15` -> N niveles; `'all'` -> tope (15). pagination?: { take?: number; // Número de elementos a recuperar skip?: number; // Número de elementos a omitir }; sort?: { contentType?: 'asc' | 'desc'; // Ordenar por modelo de contenido en orden ascendente o descendente lastUpdate?: 'asc' | 'desc'; // Ordenar por fecha de última actualización `fields.${string}`?: 'asc' | 'desc'; // Ordenar por valores específicos de campos };}| 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. |
includeRelatedContent | Controla cuántos niveles de contenido relacionado expande el servidor en una sola respuesta. Acepta false, true (1 nivel, legacy), 0..15 o 'all' (alias del tope de profundidad, 15). El servidor aplica un tope de profundidad de 15 y un presupuesto de 500 contenidos resueltos por petición; cuando se trunca, la respuesta incluye X-Related-Content-Partial: true y siempre expone X-Related-Content-Resolved-Depth.Ejemplos: client.getContentList({ includeRelatedContent: true }) — 1 nivel (legacy).client.getContentList({ includeRelatedContent: 3 }) — 3 niveles.client.getContentList({ includeRelatedContent: 'all' }) — hasta 15 niveles. |
pagination | Un objeto que permite paginar los resultados.take: Número de elementos a recuperar.skip: Número de elementos a omitir.Por ejemplo: client.getContentList({ pagination: { take: 10, skip: 20 } }) recupera 10 elementos omitiendo los primeros 20. |
sort | Un objeto que permite ordenar los resultados.contentType: Ordenar por modelo de contenido en orden ascendente o descendente.lastUpdate: Ordenar por fecha de última actualización.fields.${string}: Ordenar por valores específicos de campos.Por ejemplo: client.getContentList({ sort: { 'fields.title': 'asc' } }) ordena por el campo title en orden ascendente. |
type ClientFilter<Type = string | boolean | number> = | Type | { in?: Type[]; ne?: Type; nin?: Type[]; };| 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: ['post', 'minibio'] })Recupera una lista de contenidos filtrando los campos que coincidan con post y/o minibio |
ne | Filtra el contenido donde el parámetro no es igual a este valor.Por ejemplo: client.getContentList({ contentType: { ne: 'page' } })Recupera una lista de contenidos cuyo modelo no es igual a page |
nin | Filtra el contenido donde el parámetro no contiene ninguno de estos valores.Por ejemplo: client.getContentList({ contentType: { nin: ['page', 'post'] } })Recupera una lista de contenidos cuyo modelo no sea ni page ni post |
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.