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:
- Um 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:
- Estes exemplos não incluem tratamento de erros.
- Você pode gerenciar erros usando um bloco try-catch ou empregando uma construção como await Promise.catch((error) => error).
Cenário
1. Importar defineOneEntry do SDK 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": 11,
"attributeSetIdentifier": "ticket",
"localizeInfos": {
"title": "Silver"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 5,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 150,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"tickets"
],
"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
}
}
},
{
"id": 6,
"attributeSetIdentifier": "service",
"localizeInfos": {
"title": "Green service"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 7,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 150,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"categories": [
"services"
],
"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
}
}
},
{
"id": 12,
"attributeSetIdentifier": "ticket",
"localizeInfos": {
"title": "Gold"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 4,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 200,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"tickets"
],
"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
}
}
},
{
"id": 2,
"attributeSetIdentifier": "service",
"localizeInfos": {
"title": "Red service"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 8,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 250,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"categories": [
"services"
],
"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
}
}
},
{
"id": 13,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Red ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 3,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 300,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"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
}
}
},
{
"id": 14,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Green ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 2,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 340,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"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
}
}
},
{
"id": 15,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Orange ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"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
}
}
},
{
"id": 7,
"attributeSetIdentifier": "service",
"localizeInfos": {
"title": "Blue service"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 6,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 450,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"categories": [
"services"
],
"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
}
}
}
],
"total": 8
}
Exemplo final
// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
// 2. Creating an API client
const { FileUploading, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. Form array of filtering conditions
const body = [
{
attributeMarker: 'price',
conditionMarker: 'mth', // more than
conditionValue: 100,
isNested: false,
},
{
attributeMarker: 'price',
conditionMarker: 'lth', // less than
conditionValue: 500,
isNested: false,
},
];
// 4. Defining the request parameters
const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};
// 5. Receiving products data
const products = await Products.getProducts(body, 'en_US', userQuery);
console.log(products);