发送节点js后无法设置标头 [英] Can't set headers after they are sent node js

查看:113
本文介绍了发送节点js后无法设置标头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试发送一些表单数据,但是我使用express.js收到此错误:

I'm trying to send some form data, but I get this error using express.js:


无法设置标题发送后。

Can't set headers after they are sent.

这是我到目前为止的代码:

This is my code so far:

app.post('/api/users/profile/:username', isAuthenticated, userUploads, function(req, res, next) {
    if (req.params.username) {
        User.findOne({ username: req.params.username }, function(err, user) {
            if (err) return next(err);
            user.profile.name = req.body.name;
            user.profile.gender = req.body.gender;

            var files = req.files.file;
            if (files){
                if (files.length > 0){
                    for (f in files){
                        user.profile.pictures.push(files[f])
                    }
                }else{
                    user.profile.pictures.push(files)
                }
            }
            user.save(function(err) {
                if (err) return next(err);
                res.send(200);
            });

            console.log(res.send(user)) //HERE IS WHERE I GET THE ERROR

        });
    }else{
        return res.send(400, { message: 'User does not exist!!' });
    }
});


推荐答案

通过控制台记录res.send(用户)你是再次发送。您只能发送一次和一次。

By console logging res.send(user) you are sending again. You can send once and once only.

app.post('/api/users/profile/:username', isAuthenticated, userUploads, function(req, res, next) {
    if (req.params.username) {
        User.findOne({ username: req.params.username }, function(err, user) {
            if (err) return next(err);
            user.profile.name = req.body.name;
            user.profile.gender = req.body.gender;

            var files = req.files.file;
            if (files){
                if (files.length > 0){
                    for (f in files){
                        user.profile.pictures.push(files[f])
                    }
                }else{
                    user.profile.pictures.push(files)
                }

            }
            user.save(function(err) {
                if (err) return next(err);
                res.status(200).send(user);
            });

        });
    }else{
        return res.send(400, { message: 'User does not exist!!' });
    }
});

这篇关于发送节点js后无法设置标头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆