当我尝试在 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
最佳答案
让我们看一下堆栈跟踪:
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);
关于node.js - Mongoose 查询中未处理的 'error' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40545716/