Nhảy đến nội dung

Lọc sản phẩm theo khoảng giá

Phương pháp này cho phép bạn thu hẹp danh sách sản phẩm một cách hiệu quả đến 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:

  • Chúng tôi không xử lý lỗi trong các ví dụ này.
  • Bạn có thể xử lý lỗi trong trycatch hoặc trong một cấu trúc như "await Promise.catch((error) => error)"

Kịch bản

1. Nhập oneEntry và định nghĩa url và token

Ví dụ:

import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

2. Tạo một client API với hàm 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ụ:

[
{
"attributeMarker": "price",
"conditionMarker": "mth",
"conditionValue": 100,
"isNested": false
},
{
"attributeMarker": "price",
"conditionMarker": "lth",
"conditionValue": 500,
"isNested": false
}
]

4. Định nghĩa các tham số yêu cầu

Ví dụ:

{
"offset": 0,
"limit": 20,
"sortKey": "price",
"sortOrder": "ASC"
}

5. Nhận dữ liệu sản phẩm

Ví dụ:

{
"items": [
{
"id": 6,
"localizeInfos": {
"title": "Dịch vụ xanh"
},
"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": "Bạc"
},
"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": "Vàng"
},
"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": "Dịch vụ đỏ"
},
"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": "Bóng đỏ"
},
"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": "Bóng xanh"
},
"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": "Bóng cam"
},
"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": "Dịch vụ xanh"
},
"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
}

Ví dụ cuối cùng

// 1. Nhập oneEntry và định nghĩa PROJECT_URL và APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

// 2. Tạo một client API
const { FileUploading, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Tạo mảng các điều kiện lọc
const body = [
{
attributeMarker: 'price',
conditionMarker: 'mth', // nhiều hơn
conditionValue: 100,
isNested: false,
},
{
attributeMarker: 'price',
conditionMarker: 'lth', // ít hơn
conditionValue: 500,
isNested: false,
},
];

// 4. Định nghĩa các tham số yêu cầu
const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};

// 5. Nhận dữ liệu sản phẩm
const products = await Products.getProducts(body, 'en_US', userQuery);
console.log(products);