Filtrar produtos com faixa de preço
Este método permite que você reduza efetivamente uma lista de produtos para aqueles que se encaixam dentro de um orçamento ou estratégia de preços especificados.
✅ Propósito do cenário:
- Definir Faixa de Preço
- Formar um array de filtros e passar como filtro
- Aplicar Filtro e revisar resultados
✅ O que você precisa:
- Uma PROJECT_URL e APP_TOKEN válidos para autenticação com a API OneEntry.
- Produtos com campo "preço"
- Dados da faixa de preço
📌 Importante:
- Não tratamos erros nestes exemplos.
- Você pode tratar erros em trycatch ou em uma construção como "await Promise.catch((error) => error)"
Cenário
1. Importar oneEntry e definir url e token
Exemplo:
import { defineOneEntry } from 'oneentry';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
2. Criando um cliente API com a função defineOneEntry()
Exemplo:
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. Formar array de condições de filtragem
Exemplo:
[
{
"attributeMarker": "price",
"conditionMarker": "mth",
"conditionValue": 100,
"isNested": false
},
{
"attributeMarker": "price",
"conditionMarker": "lth",
"conditionValue": 500,
"isNested": false
}
]
4. Definindo os parâmetros da requisição
Exemplo:
{
"offset": 0,
"limit": 20,
"sortKey": "price",
"sortOrder": "ASC"
}
5. Recebendo dados dos produtos
Exemplo:
{
"items": [
{
"id": 6,
"localizeInfos": {
"title": "Serviço Verde"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "service",
"position": 6,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 150,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "150",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"type": {
"type": "list",
"value": [],
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 2,
"additionalFields": [],
"isProductPreview": false
},
"sku": {
"type": "string",
"value": "",
"isIcon": false,
"position": 3,
"additionalFields": [],
"isProductPreview": false
}
},
"categories": [
"services"
],
"isVisible": true
},
{
"id": 11,
"localizeInfos": {
"title": "Prata"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "ticket",
"position": 8,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 150,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "150",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
}
},
"categories": [
"tickets"
],
"isVisible": true
},
{
"id": 12,
"localizeInfos": {
"title": "Ouro"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "ticket",
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 200,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "200",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
}
},
"categories": [
"tickets"
],
"isVisible": true
},
{
"id": 2,
"localizeInfos": {
"title": "Serviço Vermelho"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "service",
"position": 3,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 250,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "250",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"type": {
"type": "list",
"value": [],
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 2,
"additionalFields": [],
"isProductPreview": false
},
"sku": {
"type": "string",
"value": "",
"isIcon": false,
"position": 3,
"additionalFields": [],
"isProductPreview": false
}
},
"categories": [
"services"
],
"isVisible": true
},
{
"id": 13,
"localizeInfos": {
"title": "Bola Vermelha"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "product",
"position": 4,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 300,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "300",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": [],
"isProductPreview": true
}
},
"categories": [
"products"
],
"isVisible": true
},
{
"id": 14,
"localizeInfos": {
"title": "Bola Verde"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "product",
"position": 5,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 340,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "340",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": [],
"isProductPreview": true
}
},
"categories": [
"products"
],
"isVisible": true
},
{
"id": 15,
"localizeInfos": {
"title": "Bola Laranja"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "product",
"position": 7,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "400",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": [],
"isProductPreview": true
}
},
"categories": [
"products"
],
"isVisible": true
},
{
"id": 7,
"localizeInfos": {
"title": "Serviço Azul"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "service",
"position": 2,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 450,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"attributeValues": {
"price": {
"type": "real",
"value": "450",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
},
"type": {
"type": "list",
"value": [],
"isIcon": false,
"position": 1,
"additionalFields": [],
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 2,
"additionalFields": [],
"isProductPreview": false
},
"sku": {
"type": "string",
"value": "",
"isIcon": false,
"position": 3,
"additionalFields": [],
"isProductPreview": false
}
},
"categories": [
"services"
],
"isVisible": true
}
],
"total": 8
}
Exemplo final
// 1. Importar oneEntry e definir PROJECT_URL e APP_TOKEN
import { defineOneEntry } from 'oneentry';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
// 2. Criando um cliente API
const { FileUploading, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. Formar array de condições de filtragem
const body = [
{
attributeMarker: 'price',
conditionMarker: 'mth', // mais que
conditionValue: 100,
isNested: false,
},
{
attributeMarker: 'price',
conditionMarker: 'lth', // menos que
conditionValue: 500,
isNested: false,
},
];
// 4. Definindo os parâmetros da requisição
const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};
// 5. Recebendo dados dos produtos
const products = await Products.getProducts(body, 'en_US', userQuery);
console.log(products);