如果 API Mysql 查询中没有返回结果,则为未定义值

undefined value if no result returned in API Mysql query

我正在研究我的第一个 API,每次都是第一次使用 Node.js。

我有这段代码是测试代码。我正在尝试从我的系统中获取 Chemist 用户名和密码。 如果查询运行并且存在一行,这会正常工作,但是我尝试获取控制台日志错误甚至状态结果,但我做不到。

它只是在 const 部分死掉,因为没有行。

我试过将声明移到 IF 部分下,但这也会导致错误!

感谢您指出正确的方向。

 const express = require('express');
const router = express.Router();
var config = require('./../../databaseConfig');
var connection= config.connection;


router.get('/:id',(req,res) => {
    connection.query('SELECT * FROM tblChemists WHERE chemistID = ?',[req.params.id],(err,rows,fields)=>{
               
        const chemName = rows[0].chemistName;
        const chemPass = rows[0].chemistpass;
        
        if(!err)
        console.log(chemName),
        console.log(chemPass),
        res.status(201).json({
            message: 'Chemist Found',
            name: chemName,
            pass: chemPass  
            
        });
        else
        console.log(err);
    })
    
    
});





module.exports = router;

您需要在尝试访问数据之前检查行是否有数据。您还应该考虑将所有内容包装在 try-catch


router.get('/:id', (req, res) => {
  connection.query('SELECT * FROM tblChemists WHERE chemistID = ?', [req.params.id], (err, rows, fields) => {
    if (rows && Array.isArray(rows) && rows.length) {
      const chemName = rows[0].chemistName
      const chemPass = rows[0].chemistpass
    } else {
      return res.status(500).send('no rows returned')
    }

    if (!err) {
      console.log(chemName),
      console.log(chemPass),
      res.status(201).json({
        message: 'Chemist Found',
        name: chemName,
        pass: chemPass

      })
    } else {
      console.log(err)
    }
  })
})