当我尝试在mongodb中找到最大ID号时,它不起作用。我错过了什么?
这是我的代码:
router.get('/check', function(req, res, next) {
var query = news.find({}, {"id":1,"_id":0});
query.select('id');
query.exec(function (err, result) {
res.writeHead(200,{'Content-Type':'text/plain;charset=UTF-8'});
if(err) {
res.end(err);
};
res.end(result);
});
});
并且出现了错误:
events.js:160
throw er; // Unhandled 'error' event
^
TypeError: First argument must be a string or Buffer
at ServerResponse.OutgoingMessage.end (_http_outgoing.js:543:11)
at C:\Users\Romy\WebstormProjects\388-admin\routes\admin.js:44:13
答案 0 :(得分:3)
让我们看一下堆栈跟踪:
TypeError: First argument must be a string or Buffer
好的,所以你没有将正确类型的参数传递给函数。
at ServerResponse.OutgoingMessage.end (_http_outgoing.js:543:11)
该功能称为end
。
at C:\Users\Romy\WebstormProjects\388-admin\routes\admin.js:44:13
您可以从文件routes\admin.js
的第44行(偏移13)调用它。
这很可能是这一行:
res.end(err);
因为错误不是缓冲区的字符串。如果要发回错误消息,可以使用:
res.end(err.message);
此外,请确保在您拨打res.end()
后再次调用它,因此请将代码重写为:
if (err) {
res.end(err.message);
} else {
res.end(result);
}
或者,有点短:
if (err) {
return res.end(err.message);
}
res.end(result);