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);
          }
      }
    });
});
Другие вопросы по тегам