我在Node.JS中创建了一个RestFull API,它检查特定的牌照是否在数据库(MySQL)中注册,在结束点我只是告知Ex板:(http:// localhost:3009 / _api_v1 / car / ABC2012)并使用get函数,如果此卡存在,它将以json格式返回此卡,直到它正常工作,但如果您输入未注册的卡(例如:http:// localhost:3009 / _api_v1 / car / WWW3432))应该返回一条消息err.status(错误(' 404 Not Found'),但它返回一个空数组[]而没有这条消息,如果你可以帮我解决这个疑问谢谢你!
router.get('/:id?', function (req, res, next){
Node.getNodeBylicensePlate(req.params.id,function(err,rows){
if(err)
{
res.json(err);
}
else
{
res.json(rows);
}
});
});
===========================
getNodeBylicensePlate:function(licensePlate,callback){
return db.query("select licensePlate from car where licensePlate=?",[licensePlate],callback);
},
答案 0 :(得分:0)
我假设它是因为只有在出现真正的Sql错误(无效查询,超时,死锁等)时才会返回错误。
您需要询问rows
变量,如果空结果返回404:
router.get('/:id?', function (req, res, next){
Node.getNodeBylicensePlate(req.params.id,function(err,rows){
if(err)
{
res.json(err);
}
else
{
if (!rows || !rows.length) {
res.status(404);
}
else {
res.json(rows);
}
}
});
});
答案 1 :(得分:0)
我猜mysql查询返回一个空数组
router.get('/:id?', function (req, res, next){
Node.getNodeBylicensePlate(req.params.id,function(err,rows){
if(err) {
res.json(err);
return;
}
if (!rows.length) {
res.status(404).send({ message: 'Not Found' });
return;
}
res.json(rows);
});
});