我有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){});
我还有一个关于如何处理数据库问题的问题。我现在正在做的是记录错误并稍后重试。我应该遵循更好的做法吗?
答案 0 :(得分:0)
您应该返回一个空数组或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
});