Nhảy đến nội dung

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

✅ 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": 11,
"localizeInfos": {
"title": "Bạc"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "ticket",
"position": 3,
"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
}
},
"isVisible": true
},
{
"id": 6,
"localizeInfos": {
"title": "Dịch vụ xanh"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "service",
"position": 1,
"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
}
},
"isVisible": true
},
{
"id": 12,
"localizeInfos": {
"title": "Vàng"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "ticket",
"position": 2,
"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
}
},
"isVisible": true
},
{
"id": 2,
"localizeInfos": {
"title": "Dịch vụ đỏ"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "service",
"position": 4,
"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
}
},
"isVisible": true
},
{
"id": 13,
"localizeInfos": {
"title": "Bóng đỏ"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "product",
"position": 7,
"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
}
},
"isVisible": true
},
{
"id": 14,
"localizeInfos": {
"title": "Bóng xanh"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "product",
"position": 6,
"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
}
},
"isVisible": true
},
{
"id": 15,
"localizeInfos": {
"title": "Bóng cam"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "product",
"position": 5,
"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
}
},
"isVisible": true
},
{
"id": 7,
"localizeInfos": {
"title": "Dịch vụ xanh dương"
},
"statusIdentifier": null,
"statusLocalizeInfos": {},
"attributeSetIdentifier": "service",
"position": 8,
"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
}
},
"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: any = [
{
attributeMarker: 'price',
conditionMarker: 'mth', // lớn hơn
conditionValue: 100,
isNested: false,
},
{
attributeMarker: 'price',
conditionMarker: 'lth', // nhỏ 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);