如果 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)
}
})
})
我正在研究我的第一个 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)
}
})
})