当数据库中没有行时,Sequelize总是超时

时间:2016-12-09 09:47:43

标签: node.js sequelize.js

我在nodejs服务器上获得了sequelize的用户:

router.get('/:id', function (req, res) {
  models.user.find({
      where: {
          id: req.params.id
      }
  }).then(function (result) {
      if (result === null) {
          res.status(204);
      } else {
          res.status(200);
          res.json(result);
      }
  });
});

当用户存在于数据库中时工作正常,但是当我使用不存在的id时,这会超时,就像我使用的其他所有查找一样。

有人可以告诉我,我做错了吗?

1 个答案:

答案 0 :(得分:1)

如果您的结果为空,则设置响应的状态,但不要返回任何内容。

通常的方法是调用next()来结束路线:

router.get('/:id', function (req, res, next) {
    models.Utilisateur.find({
        where: {
            id: req.params.id
        },
        include: [{model: models.Profil, include: [{model: models.Fonctionnalite}], through: {attributes: []}}]
    }).then(function (result) {
        if (result === null) {
            res.status(204);
            next();
        } else {
            res.status(200);
            res.json(result);
        }
    });
});

或者你可以改为返回一个json对象。

res.json({error: "not found"});