当在数据库记录中找不到请求的id时,我试图弄清楚如何捕获错误。
我的代码是:
router.get('/users/:id', function(req, res) {
getId = req.params.id
db.con.query('SELECT * FROM employees where id=?', getId, function(err, results) {
if (err) {
console.log('error in query')
return
} else {
obj = {
id: results[0].id,
name: results[0].name,
location: results[0].location
// error should be cached here when a requested results[0].id is not found
}
res.render('showuser');
}
})
});在控制台中,当请求不存在的id时,我会得到以下错误,但是我无法以编程的方式捕获该错误。
throw err; // Rethrow non-MySQL errors
^
ReferenceError: id is not defined
at Query._callback (C:\NodeJS\CRUD\CRUD-4\routes\add.js:21:13)Node:v8.8.0
Express:v4.15.5
发布于 2017-12-07 18:52:40
试试这个:
try{
obj = {
id: results[0].id,
name: results[0].name,
location: results[0].location
}
}catch(err){
//handle error
}try {...}catch...是您在JavaScript中处理异常的方式。您可以阅读更多关于它的这里。。
发布于 2017-12-07 18:59:41
// Error handler
app.use(function(err, req, res, next) {
res.status(500).end(err.message);
});
...
router.get('/users/:id(\\d+)', function(req, res, next) {
var id = req.params.id;
db.con.query('SELECT * FROM employees where id= ?', id, function (err, results) {
if (err)
return next(err);
if (results.length == 0)
return next(new Error('Incorrect id: ' + id));
obj = {
id: results[0].id,
name: results[0].name,
location: results[0].location
}
res.render('showuser', obj);
});
})发布于 2022-09-06 15:53:28
试试下面的代码:
router.get('/product/:id', function(req, res, next){
try {
const { idProduct } = req.body
const [detailProduct] = await Product.detail(idProduct);
if (detailProduct.length === 0) {
return res.status(404).send({
status: "404",
msg: "Not found",
data: null
});
}
return res.status(200).json(detailProduct[0])
} catch (error) {
if (!error.statusCode) {
error.statusCode = 500
}
next(error)
}
}https://stackoverflow.com/questions/47701803
复制相似问题