我想用mongoose保存一个字符串数组,但我收到错误

时间:2017-03-03 05:20:43

标签: node.js mongodb express mongoose

我想保存一个字符串数组,但是我收到以下错误:

Error: Can't set headers after they are sent.

这是我保存的代码:

router.post('/addalluserskills', function(req, res){
    console.log(req.body);
        var userSkill = new UserSkill();
        userSkill.email = req.session.email;

    for (var i = 0; i < req.body.mySkills; i++){

        userSkill.user_skill_id = req.body.mySkills[i];
        userSkill.save(function(err){
        if(err) return res.send(err);
        res.json({
            message: '201: Successfully added skill'
        });
    });
    }

});

我不能两次保存吗?我不明白这里可能出现什么问题。连接是否仍然打开,我需要在发送另一个之前关闭?

编辑:

答案:

router.post('/addalluserskills', function(req, res){

    for (var i = 0; i < req.body.mySkills.length; i++){
        var userSkill = new UserSkill();
        userSkill.email = req.session.email;
        userSkill.user_skill_id = req.body.mySkills[i];
        userSkill.save(function(err){
        if(err) return res.send(err);

    });
    }
            res.json({
                message: '201: Successfully added skill'
            });

});

1 个答案:

答案 0 :(得分:1)

在整个数组处理完成后发送响应,

以前您的req.body.mySkills包含数组,您处理数组中的第一个元素并保存它并执行res.json并再次处理数组中的第二个元素并发送响应头{再次{1}},这会引发错误res.json 因为你已经发送了响应标题。

Error: Can't set headers after they are sent.