globalSearch
Busca pública em títulos e valores de atributos de registros visíveis.
Descrição
Este método pesquisa nomes e valores de atributos de registros em tipos de entidade. Ele retorna uma Promise que resolve para um objeto IGlobalSearchResponse - a consulta para a qual foi executada, além dos registros encontrados agrupados por tipo de entidade, cada item carregando o contexto de como ele correspondeu.
.globalSearch(
,
,
,
,
);
Esquema de parâmetros
Esquema
query(obrigatório): string
Consulta de busca
exemplo: "inverno"
types: TGlobalSearchEntityType[]
Tipos de entidade para pesquisar, enviados separados por vírgula. Pesquisa todos os tipos quando omitido
visibility: 'todos' | 'visível' | 'oculto'
Filtro de visibilidade dos registros pesquisados. Padrão: "todos"
exemplo: "todos"
offset: number
Deslocamento do modo de detalhamento. Passe-o apenas junto com um único tipo acessível em types
limit: number
Tamanho da página do modo de detalhamento. Passe-o apenas junto com um único tipo acessível em types, caso contrário, a API responde 400 "O modo de detalhamento (limite/deslocamento) requer exatamente um tipo acessível em types". Sem ele, cada grupo é retornado na íntegra
Exemplos
Exemplo mínimo
const response = await Search.globalSearch('winter');
Exemplo com atributos
// Drilldown: offset/limit are accepted only alongside exactly one type.
const response = await Search.globalSearch('winter', ['products'], 'visible', 0, 20);
Renderizando os grupos
const { query, groups } = await Search.globalSearch('test');
groups.forEach((group) => {
console.log(`${group.type} (${group.items.length}${group.hasMore ? '+' : ''})`);
group.items.forEach((item) => {
// fragment is plain text — safe to highlight yourself
console.log(item.title ?? item.identifier, item.matchKind, item.fragment);
});
});
Exemplo de resposta
{
"query": "test",
"groups": [
{
"type": "pages",
"items": [
{
"type": "pages",
"id": 50,
"title": "Test",
"matchKind": "exact",
"matchedField": "url",
"subtitle": "test",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "blocks",
"items": [
{
"type": "blocks",
"id": 4,
"title": "test",
"identifier": "test",
"matchKind": "exact",
"matchedField": "identifier",
"langCode": "en_US"
}
],
"hasMore": false
},
{
"type": "discounts",
"items": [
{
"type": "discounts",
"id": 1,
"title": "Example discount",
"identifier": "example_discount",
"matchKind": "attributeValue",
"matchedField": "attributeValue",
"matchedAttribute": {
"identifier": "example_discount",
"title": "example_discount"
},
"fragment": "test value",
"langCode": "en_US"
}
],
"hasMore": false
}
]
}
Esquema de resposta
Esquema: IGlobalSearchResponse
query: string
A consulta para a qual os resultados foram produzidos.
exemplo: "inverno"
groups: IGlobalSearchGroup[]
Registros encontrados agrupados por tipo de entidade.
groups.type: TGlobalSearchEntityType
Tipo de entidade do grupo.
exemplo: "produtos"
groups.items: IGlobalSearchItem[]
Registros encontrados dentro deste tipo de entidade.
groups.hasMore: boolean
Se mais registros deste tipo estão disponíveis além da página solicitada.
exemplo: false
ℹ️
offsetelimitrequerem exatamente um tipo acessível emtypes; qualquer outra combinação responde 400. Omitir ambos para obter cada grupo na íntegra - veja Modo de detalhamento.