节点js返回无法在发送标头后设置

时间:2015-05-11 23:14:55

标签: node.js http express

我遇到了node.js的问题,他在控制台上返回一个错误:

Error: Can not set after headers They are sent.

这里是我的代码中返回错误的部分:

app.post ('/ register', function (req, res) {
    var = usuarioCadastro req.body.usuario;
    var = emailCadastro req.body.email;
    var = telefoneCadastro req.body.telefone;
    var = senhaCadastro req.body.senha;

    console.log ("User:" + usuarioCadastro);
    console.log ("Email:" + emailCadastro);
    console.log ("Telephone" + telefoneCadastro);
    console.log ("Password" + senhaCadastro);

      pool.query('SELECT * FROM users WHERE email = ?',[emailCadastro], function(err, rows, fields) {
            if (err) throw err;
            for (var i in rows){ var emailBanco = rows[i].email; }
            if(emailCadastro === emailBanco){
                console.log("Email já foi cadastrado");
                res.set('Content-Type', 'application/json');
                res.send({ code: '303', mensagem:'This email already signup' });

            }else{
                var sql = {usuario:usuarioCadastro,email:emailCadastro,senha:senhaCadastro};
                pool.query('INSERT INTO users SET ?',[sql], function(err, rows, fields) {
                    if (err) throw err;
                    console.log("Novo usuario cadastrado");
                    res.send({ code: '200', mensagem:'Sucess, welcome to trimtrim' });

                });/*Second Query*/

            }/* Else */  

}); / * First Query * /

我一直在研究,从我看到的,表达式只能发送一次。我需要发送更多次。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您只能发送一次标头。聚合您的消息并在循环后发送所有消息。

        connection.release ();
        var msg = '';
        for (var i in rows) {
            if (emailCadastro === rows [i] .email) {
            console.log ("Email database:" + rows [i] .email);

            if (msg.length>0) msg += '<br/>';
            msg += 'E-mail already registered: ' + rows[i].email;

            errodeForm ++;

            }

        } // For

        if (msg.length>0) res.json ({code: 303 Message: msg});