我让nodejs访问数据库以检索一行订单。
在名为orderDb.js的文件中定义了以下函数
module.exports.getWaitingOrders = function getWaitingOrders(callback) {
pool.query("SELECT * FROM live_order_table WHERE isWaiting = 1;", function(err, rows, fields) {
if (err) {
return new Error('Db error: ' + err);
}
if (rows.length <= 0) {
return new Error("No results"); //Is this recommended?
return [];// or this?
}
rows.forEach(function(row) {
var order = {
orderID: row.order_id
}
});
}
}
从数据库返回任何内容时,我应该返回错误还是空数组/对象?
我正在这样调用方法:
orderDb.getWaitingOrders(function handleWaitingOrders(err, orders){});
我也有一个关于如何处理数据库问题的问题。我现在正在做的是记录错误并稍后重试。我应该遵循更好的做法吗?
最佳答案
您应该返回一个空数组或null,以便可以识别数据库错误
module.exports.getWaitingOrders = function getWaitingOrders(callback) {
pool.query("SELECT * FROM live_order_table WHERE isWaiting = 1;", function(err, rows, fields) {
if (err) {
return new Error('Db error: ' + err) ;
}
if (rows.length <= 0) {
callback(err , []); // you should return an empty response here so that you can differentiate between error and no order
}
rows.forEach(function(row) {
var order = {
orderID: row.order_id
}
});
}
}
orderDb.getWaitingOrders(function handleWaitingOrders(err, orders){
// do your error handling here
});
关于javascript - 返回空数组或错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852784/