首页 > 解决方案 > NodeJS 创建函数崩溃

问题描述

我是 nodejs 的新手。我使用一条路线同时对两个表进行两次插入。我使用 mongo db 作为我的数据库。这是我的代码

router.post('/register',(req, res)=>{
    const newBook = new books({
        bkName: req.body.bkName,
        numberofCopies: req.body.numberofCopies,
        Author: req.body.Author,
        Edition: req.body.Edition,
        AddingDate: req.body.AddingDate
    });
    const numberofbooks = new bookNumber({
        bkName: req.body.bkName,
        numberofCopies: req.body.numberofCopies
    });
    numberofbooks.save((err,doc)=>{
        if(!err){ res.send(doc); }
        else{ console.log('Number of books adding error:'+JSON.stringify(err, undefined, 2)); }
    });
    newBook.save((err, doc)=>{
        if(!err){ res.send(doc); }
        else{console.log('Books in book Save:'+JSON.stringify(err, undefined, 2));}
    });
    
    //console.log(numberofbooks);
});

之前看过一些帖子。但是我没有发现这样的问题。当我在邮递员中运行这条路线时,它会将数据添加到两个表中,并且我的节点服务器崩溃了。所以插入后我不能做其他事情。这是我在服务器中遇到的错误。

错误:发送后无法设置标头。

at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)

我无法理解这一点,我在过去两个小时内一直在寻找答案。感谢您的宝贵时间。

标签: node.jsmongodb

解决方案


您不能对请求发送超过一个响应。错误将被抛出newBook.save()(或numberofbooks.save()- 以第二个完成为准),因为您在另一个请求中发送了第二个响应后,尝试发送第二个响应save()。目前尚不完全清楚您真正想要发送什么,目前返回了两个不同的文件。


推荐阅读