Javascript 发送POST请求后出错:发送到客户端后无法设置标头
我找不到我的代码有什么问题。。。!当我发送post请求时,得到一个错误:“发送到客户端后无法设置头” 我的模型是-在那里我创建了评论模式,而我有用户、内容、博客Javascript 发送POST请求后出错:发送到客户端后无法设置标头,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我找不到我的代码有什么问题。。。!当我发送post请求时,得到一个错误:“发送到客户端后无法设置头” 我的模型是-在那里我创建了评论模式,而我有用户、内容、博客 const mongoose = require("mongoose"); const { ObjectId } = mongoose.Schema; const comment_schema = new mongoose.Schema( { user: { type: String
const mongoose = require("mongoose");
const { ObjectId } = mongoose.Schema;
const comment_schema = new mongoose.Schema(
{
user: {
type: String,
required: true,
},
content: {
type: String,
required: true,
},
blog: {
type: mongoose.Schema.Types.ObjectId,
ref: "Blog",
},
},
{ timestamps: true }
);
const Comment = mongoose.model("Comment", comment_schema);
module.exports = Comment;
控制器是-这是我的postComment控制器,首先我使用req.params.blogId找到一个博客,然后我创建一个评论并保存它。。!最后将帖子与评论联系起来
exports.postComment = async (req, res) => {
/// Find A Blog
const blog = await Blog.findOne({ _id: req.params.blogId });
// console.log(blog);
// console.log(req.params.blogId);
/// Create A Comment
const comment = new Comment();
comment.content = req.body.content;
comment.user = req.body.user;
// console.log(req.body.user);
comment.blog = blog._id;
comment.save((err, Blog_comment) => {
if (err) {
return res.status(400).json({
error: "something went wrong please try again ..!",
});
}
res.json({ Blog_comment });
});
/// Associate Post with comment
blog.comment.push(comment._id);
blog.save((err, comment) => {
if (err) {
res.status(400).json({
error: "Saving Comment in DB failed",
});
}
// res.status(200).json(comment);
res.send(comment);
});
// res.send(comment);
};
路由器是-这是我的POST路由器()
完全错误-我不明白为什么会出现此错误
events.js:292
throw er; // Unhandled 'error' event
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to
the client
at ServerResponse.setHeader (_http_outgoing.js:518:11)
at ServerResponse.header (E:\git\backend\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (E:\git\backend\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (E:\git\backend\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (E:\git\backend\node_modules\express\lib\response.js:158:21)
at E:\git\backend\controllers\blog.js:196:9
at E:\git\backend\node_modules\mongoose\lib\model.js:4842:16
at E:\git\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
at E:\git\backend\node_modules\mongoose\lib\model.js:4865:21
at model.<anonymous> (E:\git\backend\node_modules\mongoose\lib\model.js:502:7)
at E:\git\backend\node_modules\kareem\index.js:315:21
at next (E:\git\backend\node_modules\kareem\index.js:209:27)
at E:\git\backend\node_modules\kareem\index.js:182:9
at E:\git\backend\node_modules\kareem\index.js:507:38
at processTicksAndRejections (internal/process/task_queues.js:79:11)
Emitted 'error' event on Function instance at:
at E:\git\backend\node_modules\mongoose\lib\model.js:4844:13
at E:\git\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
[... lines matching original stack trace ...]
at processTicksAndRejections (internal/process/task_queues.js:79:11)
{
code: 'ERR_HTTP_HEADERS_SENT'
}
[nodemon] app crashed - waiting for file changes before starting...
events.js:292
投掷者;//未处理的“错误”事件
^
错误[ERR\u HTTP\u HEADERS\u SENT]:发送到后无法设置头
客户
在ServerResponse.setHeader(_http_outgoing.js:518:11)
在ServerResponse.header(E:\git\backend\node\u modules\express\lib\response.js:771:10)
在ServerResponse.send(E:\git\backend\node\u modules\express\lib\response.js:170:12)
在ServerResponse.json(E:\git\backend\node\u modules\express\lib\response.js:267:15)
在ServerResponse.send(E:\git\backend\node\u modules\express\lib\response.js:158:21)
在E:\git\backend\controllers\blog.js:196:9
位于E:\git\backend\node\u modules\mongoose\lib\model.js:4842:16
在E:\git\backend\node\u modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
位于E:\git\backend\node\u modules\mongoose\lib\model.js:4865:21
在模型上。(E:\git\backend\node\u modules\mongoose\lib\model.js:502:7)
在E:\git\backend\node\u modules\kareem\index.js:315:21
下一步(E:\git\backend\node\u modules\kareem\index.js:209:27)
在E:\git\backend\node\u modules\kareem\index.js:182:9
在E:\git\backend\node\u modules\kareem\index.js:507:38
在处理和拒绝时(内部/process/task_queues.js:79:11)
在以下位置对函数实例发出“错误”事件:
位于E:\git\backend\node\u modules\mongoose\lib\model.js:4844:13
在E:\git\backend\node\u modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
[…与原始堆栈跟踪匹配的行…]
在处理和拒绝时(内部/process/task_queues.js:79:11)
{
代码:“ERR\u HTTP\u HEADERS\u SENT”
}
[nodemon]应用程序崩溃-正在等待文件更改,然后再启动。。。
有人能帮忙吗。。。!请帮助我无法解决这个问题。。。!请帮助以下是脚本的解决方案,只有在执行所有操作或引发第一个错误时,才会将响应发送到浏览器:
exports.postComment=async(req,res)=>{
试一试{
///查找博客
让blog=wait blog.findOne({u id:req.params.blogId});
///创建注释
让注释=新注释();
comment.content=req.body.content;
comment.user=req.body.user;
comment.blog=blog.\u id;
comment=comment.save();
///将帖子与评论联系起来
blog.comment.push(comment.\u id);
blog=等待blog.save();
res.send(博客);
}捕捉(错误){
res.status(400).json({
错误:“在数据库中保存注释失败”,
});
}
};
一旦响应发送到请求,您将再次发送响应。您可以在comment.save回调和blog.save回调中观察到这一点。您可以对请求响应一次。
events.js:292
throw er; // Unhandled 'error' event
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to
the client
at ServerResponse.setHeader (_http_outgoing.js:518:11)
at ServerResponse.header (E:\git\backend\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (E:\git\backend\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (E:\git\backend\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (E:\git\backend\node_modules\express\lib\response.js:158:21)
at E:\git\backend\controllers\blog.js:196:9
at E:\git\backend\node_modules\mongoose\lib\model.js:4842:16
at E:\git\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
at E:\git\backend\node_modules\mongoose\lib\model.js:4865:21
at model.<anonymous> (E:\git\backend\node_modules\mongoose\lib\model.js:502:7)
at E:\git\backend\node_modules\kareem\index.js:315:21
at next (E:\git\backend\node_modules\kareem\index.js:209:27)
at E:\git\backend\node_modules\kareem\index.js:182:9
at E:\git\backend\node_modules\kareem\index.js:507:38
at processTicksAndRejections (internal/process/task_queues.js:79:11)
Emitted 'error' event on Function instance at:
at E:\git\backend\node_modules\mongoose\lib\model.js:4844:13
at E:\git\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
[... lines matching original stack trace ...]
at processTicksAndRejections (internal/process/task_queues.js:79:11)
{
code: 'ERR_HTTP_HEADERS_SENT'
}
[nodemon] app crashed - waiting for file changes before starting...