Lewati ke konten utama

Filter produk dengan rentang harga

Metode ini memungkinkan Anda untuk secara efektif mempersempit daftar produk menjadi yang sesuai dengan anggaran atau strategi harga yang ditentukan.

✅ Tujuan skenario:

  • Menentukan Rentang Harga
  • Membentuk array filter dan mengirimkannya sebagai filter
  • Menerapkan Filter dan meninjau hasil

✅ Apa yang Anda butuhkan:

  • PROJECT_URL dan APP_TOKEN yang valid untuk otentikasi dengan API OneEntry.
  • Produk dengan field "harga"
  • Data rentang harga

📌 Penting:

  • Contoh-contoh ini tidak mencakup penanganan kesalahan.
  • Anda dapat mengelola kesalahan menggunakan blok try-catch atau dengan menggunakan konstruksi seperti await Promise.catch((error) => error).

📚 Lihat di dokumentasi:

📦 Referensi SDK:

Coba secara langsung

Jalankan metode ini secara interaktif di JS SDK sandbox — sambungkan Project URL dan App Token Anda pada kunjungan pertama, lalu buka:

  • Filter produk dengan rentang harga — Metode ini memungkinkan Anda untuk secara efektif mempersempit daftar produk menjadi yang sesuai dengan anggaran atau strategi harga yang ditentukan.

Skenario

1. Impor defineOneEntry dari SDK dan tentukan PROJECT_URL dan APP_TOKEN

Contoh:

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. Membuat klien API dengan defineOneEntry()

Contoh:

const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. Membentuk array kondisi penyaringan

Contoh:

const body: IFilterParams[] = [
{
attributeMarker: 'price',
conditionMarker: 'mth', // more than
conditionValue: 100,
isNested: false,
},
{
attributeMarker: 'price',
conditionMarker: 'lth', // less than
conditionValue: 500,
isNested: false,
},
];

4. Menentukan parameter permintaan

Contoh:

const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};

5. Menerima data produk

Contoh:

const products = await Products.getProducts(body, 'en_US', userQuery);
console.log('ProductsData: ', products);
Hasil:
{
"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
}

Contoh akhir

// 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);