RestFul API Node.js, Express - состояние ошибки - пустой массив ответа
Я создаю RestFull API в Node.JS, который проверяет, зарегистрирован ли конкретный номерной знак в базе данных (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);
},
2 ответа
Я думаю, что запрос 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);
});
});
Я предполагаю, что это потому, что вы возвращаете ошибку только при наличии истинной ошибки 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);
}
}
});
});