我正在使用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功能才能正常工作。
答案 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);
};
}