当没有记录存在时Mongodb与Mongoose超时

时间:2017-02-24 14:13:29

标签: node.js mongodb mongoose mean-stack

我正在使用Mongoose对mongodb进行计数查询,如下所示:

Question.count({$and: [{"tags.text": query},{"tags.text": "Diagram"}]}).execAsync()
        .then(respondWithResult(res))
        .catch(handleError(res));

我需要计算有多少记录有“Diagram”标签和另一个我通过参数得到的记录。

当结果大于0时,它正常工作,但如果没有选择记录,它只会超时而没有响应。我使用CLI尝试了相同的查询,它就像魅力一样:

> db.questions.find({$and: [{"tags.text": "Diagram"}, {"tags.text": "tag3"} ]}).count()
0

有什么想法?我完全绝望了。

**编辑**

我尝试了几件事,问题出在respondWithResult函数中。

function respondWithResult(res, statusCode) {
  statusCode = statusCode || 200;
  return function(entity) {
    if(entity) {
      return res.status(statusCode).json(entity);
    }
    return null;
  };
}

有时间会发生。只有使用count,使用find功能才能正常工作。

1 个答案:

答案 0 :(得分:0)

当count为零时你需要发送一个响应,否则响应将等到你的情况下发生的超时时间。

function respondWithResult(res, statusCode) {
  statusCode = statusCode || 200;
  return function(entity) {
    if(entity) {
      return res.status(statusCode).json(entity);
    }
    return res.status(200).json(0); //return 0 as count
  };
}

或简单地说:

function respondWithResult(res, statusCode) {
      statusCode = statusCode || 200;
      return function(entity) {
          return res.status(statusCode).json(entity);
      };
    }