Lọc sản phẩm theo khoảng giá
Phương pháp này cho phép bạn thu hẹp hiệu quả danh sách sản phẩm xuống những sản phẩm phù hợp với ngân sách hoặc chiến lược giá đã chỉ định.
✅ Mục đích của kịch bản:
- Định nghĩa khoảng giá
- Tạo mảng bộ lọc và truyền vào như một bộ lọc
- Áp dụng bộ lọc và xem xét kết quả
✅ Những gì bạn cần:
- Một PROJECT_URL và APP_TOKEN hợp lệ để xác thực với API OneEntry.
- Sản phẩm có trường "price"
- Dữ liệu khoảng giá
📌 Quan trọng:
- Những ví dụ này không bao gồm xử lý lỗi.
- Bạn có thể quản lý lỗi bằng cách sử dụng khối try-catch hoặc bằng cách sử dụng cấu trúc như await Promise.catch((error) => error).
📚 Xem trong tài liệu:
📦 Tham khảo SDK:
Thử nghiệm trực tiếp
Chạy phương pháp này một cách tương tác trong JS SDK sandbox — kết nối URL Dự án và Mã thông báo Ứng dụng của bạn khi truy cập lần đầu, sau đó mở:
- Lọc sản phẩm theo khoảng giá — Phương pháp này cho phép bạn thu hẹp hiệu quả danh sách sản phẩm xuống những sản phẩm phù hợp với ngân sách hoặc chiến lược giá đã chỉ định.
Kịch bản
1. Nhập defineOneEntry từ SDK và định nghĩa PROJECT_URL và APP_TOKEN
Ví dụ:
import { defineOneEntry } from 'oneentry';
import { IFilterParams, IProductsQuery } from 'oneentry/dist/products/productsInterfaces';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
2. Tạo một khách hàng API với defineOneEntry()
Ví dụ:
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. Tạo mảng các điều kiện lọc
Ví dụ:
const body: IFilterParams[] = [
{
attributeMarker: 'price',
conditionMarker: 'mth', // more than
conditionValue: 100,
isNested: false,
},
{
attributeMarker: 'price',
conditionMarker: 'lth', // less than
conditionValue: 500,
isNested: false,
},
];
4. Định nghĩa các tham số yêu cầu
Ví dụ:
const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};
5. Nhận dữ liệu sản phẩm
Ví dụ:
const products = await Products.getProducts(body, 'en_US', userQuery);
console.log('ProductsData: ', products);
Kết quả:
{
"items": [
{
"id": 11,
"attributeSetIdentifier": "ticket",
"localizeInfos": {
"title": "Silver"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 150,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"tickets"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 6,
"attributeSetIdentifier": "service",
"localizeInfos": {
"title": "Green service"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 2,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 150,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"categories": [
"services"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 12,
"attributeSetIdentifier": "ticket",
"localizeInfos": {
"title": "Gold"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 3,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 200,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"tickets"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 2,
"attributeSetIdentifier": "service",
"localizeInfos": {
"title": "Red service"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 4,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 250,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"categories": [
"services"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 13,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Red ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 5,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 300,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 14,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Green ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 6,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 340,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 15,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Orange ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 7,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 7,
"attributeSetIdentifier": "service",
"localizeInfos": {
"title": "Blue service"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 8,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 450,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": "",
"isSync": true,
"categories": [
"services"
],
"paymentStages": null,
"rating": {},
"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
}
},
"moduleFormConfigs": [],
"discountConfig": {}
}
],
"total": 8
}
Ví dụ cuối cùng
// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';
import { IFilterParams, IProductsQuery } from 'oneentry/dist/products/productsInterfaces';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
// 2. Creating an API client with [defineOneEntry()](/docs/index/#Installation)
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. Form array of filtering conditions
const body: IFilterParams[] = [
{
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('ProductsData: ', products);