[英]Using Async Function to return more results
我在 Wix builder 中有一個包含 3000 行的數據集。 Wix 有 1000 次退貨的限制,但是他們在這里建議了一種解決方法: https://www.wix.com/velo/forum/coding-with30-velo-velo
我正在嘗試將其添加到我的代碼中,但是我不知道需要將其插入到哪里,有人可以幫我嗎? 我的代碼如下:
import wixData from 'wix-data';
$w.onReady(function () {
uniqueDropDown1();
});
function uniqueDropDown1 (){
wixData.query("Products")
.limit(1000)
.ascending("Manufacturer")
.find()
.then(results => {
const uniqueTitles = getUniqueTitles(results.items);
$w("#dropdown1").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.Manufacturer);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return {label:curr, value:curr};
});
}
}
export function dropdown1_change(event) {
uniqueDropDown2();
$w("#dropdown2").enable();
function uniqueDropDown2 (){
wixData.query("Products")
.contains("Manufacturer", $w("#dropdown1").value)
.limit(1000)
.ascending("Model")
.find()
.then(results => {
const uniqueTitles = getUniqueTitles(results.items);
$w("#dropdown2").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.Model);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return {label:curr, value:curr};
});
}
}
}
export function dropdown2_change(event) {
uniqueDropDown3();
$w("#dropdown3").enable();
function uniqueDropDown3 (){
wixData.query("Products")
.contains("Model", $w("#dropdown2").value)
.limit(1000)
.ascending("Part")
.find()
.then(results => {
const uniqueTitles = getUniqueTitles(results.items);
$w("#dropdown3").options = buildOptions(uniqueTitles);
});
}
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.Part);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return {label:curr, value:curr};
});
}
}
我認為我需要以某種方式合並以下內容,但我完全不知道如何:
async function fetchData() {
const firstPage = await wixData.query('collection')
.limit(1000)
.find();
const secondPage = await wixData.query('collection')
.limit(1000)
.skip(1000)
.find();
const thirdPage = await wixData.query('collection')
.limit(1000)
.skip(2000)
.find();
const allItems = firstPage.items.concat(secondPage.items).concat(thirdPage.items);
return allItems;
}
提前感謝您的所有幫助。 數據集稱為產品,列是制造商、Model 和零件。
試試這個。
我重構了代碼以使用findAll
function,它下載所有項目(受WixDataQuery API 參考中的retrieveAllItems
啟發)
import wixData from 'wix-data';
$w.onReady(function () {
uniqueDropDown1();
});
// New function. Downloads all items sequentially in batches of 1000
async function findAll(wixDataQuery) {
let allItems = [];
let results = await wixDataQuery.limit(1000).find();
allItems.push(results.items);
while (results.hasNext()) {
results = await results.next();
allItems.push(results.items);
}
return allItems;
}
function uniqueDropDown1() {
// Changed this
findAll(
wixData.query("Products")
.ascending("Manufacturer")
).then(results => {
const uniqueTitles = getUniqueTitles(results);
$w("#dropdown1").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.Manufacturer);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return { label: curr, value: curr };
});
}
}
export function dropdown1_change(event) {
uniqueDropDown2();
$w("#dropdown2").enable();
function uniqueDropDown2() {
// Changed this
findAll(
wixData.query("Products")
.contains("Manufacturer", $w("#dropdown1").value)
.ascending("Model")
).then(results => {
const uniqueTitles = getUniqueTitles(results);
$w("#dropdown2").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.Model);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return { label: curr, value: curr };
});
}
}
}
export function dropdown2_change(event) {
uniqueDropDown3();
$w("#dropdown3").enable();
function uniqueDropDown3() {
// Changed this
findAll(
wixData.query("Products")
.contains("Model", $w("#dropdown2").value)
.ascending("Part")
).then(results => {
const uniqueTitles = getUniqueTitles(results);
$w("#dropdown3").options = buildOptions(uniqueTitles);
});
}
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.Part);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return { label: curr, value: curr };
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.