Mongodb 没有记录时 Mongoose 超时

Mongodb with Mongoose time out when no record exists

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

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

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

当结果大于0时可以正常工作,但如果没有选择记录,它只是超时没有反应。我使用 CLI 尝试了相同的查询,它像 charm:

> 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;
  };
}

超时发生的地方。只有计数,使用查找功能才能正常工作。

您需要在计数为零时发送响应,否则响应将一直等到超时,这就是您的情况。

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);
      };
    }