首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中不存在记录时捕获NodeJS错误

在MySQL中不存在记录时捕获NodeJS错误
EN

Stack Overflow用户
提问于 2017-12-07 18:47:41
回答 3查看 2.4K关注 0票数 0

当在数据库记录中找不到请求的id时,我试图弄清楚如何捕获错误。

我的代码是:

代码语言:javascript
复制
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时,我会得到以下错误,但是我无法以编程的方式捕获该错误。

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-07 18:52:40

试试这个:

代码语言:javascript
复制
try{
  obj = {
     id: results[0].id,
     name: results[0].name,
     location: results[0].location
  }
}catch(err){
  //handle error
}

try {...}catch...是您在JavaScript中处理异常的方式。您可以阅读更多关于它的这里。

票数 3
EN

Stack Overflow用户

发布于 2017-12-07 18:59:41

代码语言:javascript
复制
// 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);
    });
})
票数 1
EN

Stack Overflow用户

发布于 2022-09-06 15:53:28

试试下面的代码:

代码语言:javascript
复制
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)
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47701803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档