Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发送POST请求后出错:发送到客户端后无法设置标头_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 发送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

我找不到我的代码有什么问题。。。!当我发送post请求时,得到一个错误:“发送到客户端后无法设置头” 我的模型是-在那里我创建了评论模式,而我有用户、内容、博客

    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...