mapContentToModel
La función mapContentToModel
convierte el contenido a su modelo correspondiente definido en Content Island.
Esta función es útil para acceder a los datos de manera más sencilla y directa, sin tener que lidiar con la estructura interna del contenido.
Ejemplo:
import { createClient, mapContentToModel } from '@content-island/api-client';
// ... código de inicialización del cliente
const content = await client.getContent('1');console.log(content);/* { id: '1', contentType: { id: '100', name: 'post' }, lastUpdate: '2023-10-01T12:00:00Z', fields: [ { id: 'title', name: 'Título', value: 'Hola Mundo', type: 'short-text', isArray: false, language: 'es' }, { id: 'body', name: 'Cuerpo', value: 'Este es el cuerpo del post en markdown.', type: 'long-text', isArray: false, language: 'es' }, { id: 'order', name: 'Orden', value: 1, type: 'number', isArray: false, language: 'es' }, ], }*/
// 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 post = mapContentToModel<Post>(content);console.log(post);
/* { id: '1', title: 'Hola Mundo', body: 'Este es el cuerpo del post en markdown.', order: 1, language: 'es', }*/
Interfaz
function mapContentToModel<Model extends BaseModel<Language>, Language = Model["language"]>(content: Content, language?: Language) => Model;
Parámetros
Esta función acepta los siguientes parámetros:
content
: El contenido que deseas mapear a su modelo correspondiente.
interface Content { id: string; contentType: { id: string; name: string }; lastUpdate: string; fields: Field[];}
language
: Recupera solamente los campos que coincidan con este idioma. Si no se proporciona, se utilizará el primer idioma que se encuentre.
Salida
La función mapContentToModel
devuelve el contenido mapeado a su modelo correspondiente. Este objeto tiene la misma estructura que el modelo definido en Content Island, lo que facilita su uso en tu aplicación.
Ejemplo filtrando por idioma
import { createClient, mapContentToModel } from '@content-island/api-client';
// ... código de inicialización del cliente
const content = client.getContent('1', { contentType: 'post' }); // Recupera el post con id=1 en varios idiomas (es, en)console.log(content);
/* { id: '1', contentType: { id: '100', name: 'post' }, lastUpdate: '2023-10-01T12:00:00Z', fields: [ { id: '111', name: 'title', value: 'Hola Mundo', type: 'short-text', isArray: false, language: 'es' }, { id: '222', name: 'body', value: 'Este es el cuerpo del post en markdown.', type: 'long-text', isArray: false, language: 'es' }, { id: '333', name: 'order', value: 1, type: 'number', isArray: false, language: 'es' }, { id: '444', name: 'title', value: 'Hello World', type: 'short-text', isArray: false, language: 'en' }, { id: '555', name: 'body', value: 'This is the body of the post in markdown.', type: 'long-text', isArray: false, language: 'en' }, { id: '666', name: 'order', value: 1, type: 'number', isArray: false, language: 'en' }, ], }*/
// 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 post = mapContentToModel<Post>(content); // Transforma el contenido a su modelo correspondiente. Devuelve los campos en español porque es el primer idioma que encuentra.console.log(post);/* { id: '1', title: 'Hola Mundo', body: 'Este es el cuerpo del post en markdown.', order: 1, language: 'es', }*/
const spanishPost = mapContentToModel<Post>(content, 'es'); // Transforma el contenido a su modelo correspondiente. Devuelve los campos en español porque es el idioma que hemos seleccionado.console.log(spanishPost);/* { id: '1', title: 'Hola Mundo', body: 'Este es el cuerpo del post en markdown.', order: 1, language: 'es', }*/
const englishPost = mapContentToModel<Post>(content, 'en'); // Transforma el contenido a su modelo correspondiente. Devuelve los campos en inglés porque es el idioma que hemos seleccionado.console.log(englishPost);/* { id: '1', title: 'Hello World', body: 'This is the body of the post in markdown.', order: 1, language: 'en', }*/