gpt4 book ai didi

node.js - Mongoose 查询中未处理的 'error' 事件

转载 作者:太空宇宙 更新时间:2023-11-04 03:29:03 25 4
gpt4 key购买 nike

当我尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com