Pular para o conteúdo principal

Modelos, entradas e categorias

Com o SDK do Starlight, você pode listar modelosModelos representam dados que se repetem, como posts de um blog ou revistas., requisitar os dados de um modelo específico, ou utilizar uma instância de um modelo para requisitar suas entradasEntradas são instâncias de um modelo, como uma postagem de um blog ou uma edição de uma revista. e categoriasCategorias são usadas para organizar as entradas de um modelo em grupos..

O SDK provê dois objetos para trabalhar com modelos: ModelSelectors e ModelInstances. ModelSelectors são usados para listar e requisitar as informações dos modelos da sua área de trabalhoÁreas de trabalho representam sites ou aplicativos no Starlight. Todo conteúdo pertence à uma área de trabalho.. Porém, para acessar suas entradas e categorias, você precisa utilizar um ModelInstance.

ModelSelector

Visualizar na API

ModelSelectors são utilizados para listar modelos e requisitar seus dados. Para usar um ModelSelector, basta acessar a propriedade models de um StarlightClient:

import Starlight from '@starlightcms/js-sdk'

// A propriedade models é um ModelSelector
const modelSelector = Starlight.models

Em geral, você não precisa utilizar um ModelSelector como no exemplo acima. Você pode simplesmente encadear seus métodos para requisitar o que você precisa. Por exemplo:

import Starlight from '@starlightcms/js-sdk'

// Listar todos os modelos da área de trabalho
const response = await Starlight.models.list()

// Requisitar os dados de um modelo específico
const response = await Starlight.models.get('posts')

ModelInstance

Visualizar na API

ModelInstances são utilizados para requisitar dados de um modeloModelos representam dados que se repetem, como posts de um blog ou revistas. específico, suas entradasEntradas são instâncias de um modelo, como uma postagem de um blog ou uma edição de uma revista., e suas categoriasCategorias são usadas para organizar as entradas de um modelo em grupos..

Existem duas maneiras de utilizar ModelInstances: utilizando o método model() de um StarlightClient ou utilizando a sintaxe dinâmica de um cliente do SDK. Por exemplo, você pode requisitar os dados de um modelo de slugSlugs são identificadores únicos usados por todos os tipos de dado no Starlight. São utilizados em URLs para identificar dados. posts dessas duas maneiras:

import Starlight from '@starlightcms/js-sdk'

// As duas linhas são equivalentes.
const modelInstance = Starlight.model('posts') // Usando o método `model()`
const modelInstance = Starlight.posts // Dinamicamente

Assim como ModelSelectors, você também não precisa usar ModelInstances como no exemplo acima: é mais prático encadear os métodos que você precisa em uma só linha:

import Starlight from '@starlightcms/js-sdk'

// Listar as entradas de um modelo. As duas linhas são equivalentes.
const response = await Starlight.model('posts').get()
const response = await Starlight.posts.get()

Entradas

Para listar e requisitar entradasEntradas são instâncias de um modelo, como uma postagem de um blog ou uma edição de uma revista. de um modeloModelos representam dados que se repetem, como posts de um blog ou revistas., você pode utilizar a propriedade entries de um ModelInstance, que é um objeto do tipo EntrySelector.

Para listar entradas, utilize o método list() de um EntrySelector. Você pode passar um objeto de parâmetros para configurar vários aspectos da listagem, como paginação, filtragem por categoria, busca por palavra-chave, dentre outros. Por exemplo, considerando um modelo de slugSlugs são identificadores únicos usados por todos os tipos de dado no Starlight. São utilizados em URLs para identificar dados. magazines:

import Starlight from '@starlightcms/js-sdk'

// Listar as entradas do modelo. As duas linhas são equivalentes.
const response = await Starlight.model('magazines').entries.list()
const response = await Starlight.magazines.entries.list()

// Requisitar a segunda página da listagem, limitada a 5 entradas:
const response = await Starlight.magazines.entries.list({
page: 2,
limit: 5
})

// Pesquisar pelo texto "hello, world!", limitar a entradas da categoria `weekly`:
const response = await Starlight.magazines.entries.list({
query: 'hello, world!',
categories: 'weekly'
})

O método list() suporta uma gama de opções, e você pode verificá-las nessa página da API do EntrySelector.

Além disso, você também pode requisitar uma entrada específica facilmente utilizando o método get():

import Starlight from '@starlightcms/js-sdk'

// Requisitar os dados de uma entrada específica. As duas linhas são equivalentes.
const response = await Starlight.model('magazines').entries.get('issue-number-one')
const response = await Starlight.magazines.entries.get('issue-number-one')

Categorias

Você também pode listar e requisitar informações das categoriasCategorias são usadas para organizar as entradas de um modelo em grupos. de um modeloModelos representam dados que se repetem, como posts de um blog ou revistas., incluindo as entradasEntradas são instâncias de um modelo, como uma postagem de um blog ou uma edição de uma revista. que pertencem a essa categoria. Para isso, você pode usar o método category() para criar um ModelCategoryInstance. Por exemplo, considerando um modelo de slugSlugs são identificadores únicos usados por todos os tipos de dado no Starlight. São utilizados em URLs para identificar dados. videos e uma categoria de slug comedy:

import Starlight from '@starlightcms/js-sdk'

// Requisitar informações de uma categoria. As duas linhas são equivalentes.
const response = await Starlight.model('videos').category('comedy').get()
const response = await Starlight.videos.category('comedy').get()

// Listar as entradas de uma categoria. As duas linhas são equivalentes.
const response = await Starlight.model('videos').category('comedy').entries()
const response = await Starlight.videos.category('comedy').entries()

Você também pode utilizar a sintaxe dinâmica para criar um ModelCategoryInstance: basta usar o slug da categoria como uma propriedade do ModelInstance, da mesma maneira que você faria para criar um ModelInstance dinamicamente:

import Starlight from '@starlightcms/js-sdk'

// Você pode usar a sintaxe normal...
const response = await Starlight.model('videos').category('comedy').entries()

// ...a sintaxe dinâmica...
const response = await Starlight.model('videos').comedy.get()

// ...ou simplificar ainda mais usando a sintaxe dinâmica duas vezes!
// A linha abaixo e os dois exemplos acima são equivalentes.
const response = await Starlight.videos.comedy.entries()

O método entries() do ModelCategoryInstance aceita a maioria das opções que o método list() do EntrySelector, como as opções de paginação, filtragem e pesquisa. Para saber mais sobre as opções suportadas, verifique a página da API do ModelCategoryInstance.