我目前正在编写一个使用转发器设置的搜索结果页面,以便转发器容器能够将用户重定向到动态页面。
转发器和动态页面上使用的数据集由相关集合中的“数字”字段链接。因此,如果中继器在数字字段中显示“1”的详细信息,则用户可以单击容器框并重定向到“1”的动态页面。当我单击相关容器时,我已成功地使其正常工作,因为我被重定向到正确的动态页面。但是,转发器数据集中存在的某些数字在动态页面的数据集中不存在。所以我可以在转发器的数据集中有数字 1-50,但动态页面的数据集中只有 20 个存在,并且目前如果容器包含动态页面中不存在的数字,
到目前为止,我已经尝试了以下代码:
$w('#Dataset1').onReady(() => {
wixData.query('Collection1')
.eq('number', number1)
.find()
.then(res => {
const number1 = res.number1;
})
.catch ((err) => {
let errorMsg = err;
});
wixData.query('Collection2')
.eq('number', number2)
.find()
.then(res => {
const number2 = res.number2;
})
.catch ( (err) => {
let errorMsg = err;
});
if (number1 === number2){
$w("#container2").onClick( (event) => {
let $item = $w.at(event.context);
let currentItem = $item('#Dataset1').getCurrentItem();
let dynamicPageID = `${currentItem.number}`
let collectionID = `${currentItem.title}`
console.log('https://www.mywebsite.com/'+collectionID+'/'+dynamicPageID);
wixLocation.to('https://www.mywebsite.comk/'+collectionID+'/'+dynamicPageID);
});
}
});
}
但这仍然会重定向到该数字不存在的动态页面并发送到 404 错误!
有人可以请我指出正确的方向吗?
谢谢
在 Sam 提出关于 async/await 的建议之后,我一直在玩弄代码,但仍然没有找到可行的解决方案。我尝试了以下方法:
async function linktodynamicpage () {
$w('#Dataset1').onReady(() => {
wixData.query('Collection1')
.eq('number', number1)
.find()
.then(async(res) => {
const number1 = await res.number1;
})
.catch ((err) => {
let errorMsg = err;
});
wixData.query('Collection2')
.eq('number', number2)
.find()
.then(async(res) => {
const number2 = await res.number2;
})
.catch ( (err) => {
let errorMsg = err;
});
if (number1 === number2){
$w("#container2").onClick( (event) => {
let $item = $w.at(event.context);
let currentItem = $item('#Dataset1').getCurrentItem();
let dynamicPageID = `${currentItem.number}`
let collectionID = `${currentItem.title}`
console.log('https://www.mywebsite.com/'+collectionID+'/'+dynamicPageID);
wixLocation.to('https://www.mywebsite.comk/'+collectionID+'/'+dynamicPageID);
});
}
});
}
我已经尝试了一些变体,试图移动异步但不幸的是无济于事。
只是想我会看看我是否得到了正确的异步代码或者是否有错误。这样,至少我知道 async/await 选项是否是我的问题的可行解决方案。
谢谢