我正在Nodejs中创建一个项目并表示我有一个逻辑响应ajax调用,它通过其聚合框架查询<button type="submit" class="admin-link">Download Codes</button>
数据库,然后处理如此获得的结果。
从MongoDb
查询
MongoDB
此查询的回调函数
[ { _id: 'ALR', count: 7 },
{ _id: 'WTK', count: 3 },
{ _id: 'BWL', count: 9 },
{ _id: 'BAT', count: 9 } ]
看起来我正处于一种If Else地狱,这段代码按预期工作但我对此并不满意,如果有人能够以更好的方式给出一个做这个回调函数的暗示。
答案 0 :(得分:0)
除switch
案例外,您无能为力。
但是你可以像这样剪掉一些代码:
检查错误if (err) return;
时
代码块将停止执行。因此,您无需检查if (counts)
。相反,只需继续编写代码。
示例:
function (err, counts) {
if(err){
console.log(err);
return res.json({status:false, msg : err});
}
if(counts){ //remove this if. Not needed
console.log(counts);
for (var i = 0; i < counts.length; i++) {
变为
function (err, counts) {
if(err){
console.log(err);
return res.json({status:false, msg : err});
}
console.log(counts);
for (var i = 0; i < counts.length; i++)
在for循环中也可以这样做,也可以将嵌套语句和它们的父语句放在一起,如下所示:
for (var i = 0; i < counts.length; i++) {
var type = counts[i]._id;
var count = counts[i].count;
if(type == "ALR" && count < 5){
return res.json({status:false, msg : "Minimum 5 All-Rounders"});
}
if(type == "BAT" && count < 6){
return res.json({status:false, msg : "Minimum 6 Batsman"});
}
if (type == "BWL" && count < 6){
return res.json({status:false, msg : "Minimum 6 Bowlers"});
}
if(type == "WTK" && count < 3){
return res.json({status:false, msg : "Minimum 3 Wicket Keepers"});
}
}
答案 1 :(得分:-2)
简单。您可以使用switch case 而不是多个if else语句。