在控制器方法中,我有下面的代碼塊。Visual Studio Code 給出錯誤:
無法重新宣告塊范圍變數“count”和“rows”
但我不明白這一點,因為這些變數是在不同的情況下宣告的,只有一種情況會觸發。我該如何處理?
switch (tab) {
case "active":
const { count, rows } = await User.findAndCountAll({
where: {
...query,
},
offset,
limit,
});
break;
case "favourites":
const { count, rows } = await User.findAndCountAll({
where: {
...query,
[Op.or]: [{ name: {[Op.like]: `%${searchText}%` }}],
},
offset,
limit,
});
...
uj5u.com熱心網友回復:
switch 陳述句默認沒有不同的作用域,事實上如果你不在breaka 的末尾使用關鍵字,case腳本將在所有情況下執行所有代碼,直到找到中斷或switch陳述句結束。
例如:
switch(1) {
case 1:
console.log('case 1');
case 2:
console.log('case 2');
}
// OUTPUT:
// case 1
// case 2
在這種情況下,所有案例都已執行,因為我沒有使用任何break.
交換機中唯一的作用域是交換機本身,那么您如何才能實作您的目標呢?
您可以通過將案例包裝在括號內來做到這一點,因此它將變為:
switch(1) {
case 1: {
const n = 1
console.log('case ' n)
break
}
case 2: {
const n = 2
console.log('case ' n)
break
}
}
// That's valid
如果您不想復制代碼只是為了編輯查詢,您可能會執行以下操作:
const query = { /* whatever */ }
const { count, rows } = await User.findAndCountAll({
where: tab === 'active' ? {
...query,
} : {
...query,
[Op.or]: [{ name: {[Op.like]: `%${searchText}%` }}]
},
offset,
limit,
})
通過使用三元運算子,您甚至不必實作開關和復制代碼,您只需根據變數更改查詢部分
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/497612.html
上一篇:在同一終端實體中第一次呼叫后,從其他PS1腳本呼叫PS1腳本失敗,為什么?
下一篇:無法從源/pymanage.pymakemigrations決議匯入“django.db.models”未檢測到更改
