Cannot set headers after they are sent to the client error message. Why do I get this message?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I'm confused by this error message, and I am not sure how to debug. I looked at similar questions, and I think I found the part in the code that needs to be fixed, but I am unsure on how to go about it.
Here is the code -
app.post('/sign_up_results', function(req, res, next) {
if (req.body.administrator === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'administrator'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
} else if (req.body.user === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'user'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('upload_paper');
}
});
node.js express callback
add a comment |
I'm confused by this error message, and I am not sure how to debug. I looked at similar questions, and I think I found the part in the code that needs to be fixed, but I am unsure on how to go about it.
Here is the code -
app.post('/sign_up_results', function(req, res, next) {
if (req.body.administrator === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'administrator'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
} else if (req.body.user === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'user'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('upload_paper');
}
});
node.js express callback
add a comment |
I'm confused by this error message, and I am not sure how to debug. I looked at similar questions, and I think I found the part in the code that needs to be fixed, but I am unsure on how to go about it.
Here is the code -
app.post('/sign_up_results', function(req, res, next) {
if (req.body.administrator === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'administrator'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
} else if (req.body.user === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'user'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('upload_paper');
}
});
node.js express callback
I'm confused by this error message, and I am not sure how to debug. I looked at similar questions, and I think I found the part in the code that needs to be fixed, but I am unsure on how to go about it.
Here is the code -
app.post('/sign_up_results', function(req, res, next) {
if (req.body.administrator === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'administrator'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
} else if (req.body.user === 'on') {
data = {name : req.body.name, password: req.body.password, user: 'user'};
pool.query('INSERT INTO users SET ?', data, function(err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('upload_paper');
}
});
node.js express callback
node.js express callback
edited Nov 21 '18 at 20:54
mitchric
asked Nov 21 '18 at 20:51
mitchricmitchric
155
155
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You must be extra careful with callback function pool.query
. In the old codes,
data = {
name: req.body.name,
password: req.body.password,
user: 'administrator'
};
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
res.render
will be executed first than pool.query
. So, basically you already tell that request is done without waiting pool.query
to finish.
A few seconds later, pool.query
is finished. Your issue is because your query encountered an error so it will go to next(err)
which is also tell that your request is done. This is invalid because you can't tell request is done more than one time. It causes Cannot set headers after they are sent to the client error message
.
The simple workaround is to move res.render
inside the pool.query
such as
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
return next(err); // we can just return here
}
res.render('review_papers');
});
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53420285%2fcannot-set-headers-after-they-are-sent-to-the-client-error-message-why-do-i-get%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You must be extra careful with callback function pool.query
. In the old codes,
data = {
name: req.body.name,
password: req.body.password,
user: 'administrator'
};
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
res.render
will be executed first than pool.query
. So, basically you already tell that request is done without waiting pool.query
to finish.
A few seconds later, pool.query
is finished. Your issue is because your query encountered an error so it will go to next(err)
which is also tell that your request is done. This is invalid because you can't tell request is done more than one time. It causes Cannot set headers after they are sent to the client error message
.
The simple workaround is to move res.render
inside the pool.query
such as
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
return next(err); // we can just return here
}
res.render('review_papers');
});
add a comment |
You must be extra careful with callback function pool.query
. In the old codes,
data = {
name: req.body.name,
password: req.body.password,
user: 'administrator'
};
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
res.render
will be executed first than pool.query
. So, basically you already tell that request is done without waiting pool.query
to finish.
A few seconds later, pool.query
is finished. Your issue is because your query encountered an error so it will go to next(err)
which is also tell that your request is done. This is invalid because you can't tell request is done more than one time. It causes Cannot set headers after they are sent to the client error message
.
The simple workaround is to move res.render
inside the pool.query
such as
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
return next(err); // we can just return here
}
res.render('review_papers');
});
add a comment |
You must be extra careful with callback function pool.query
. In the old codes,
data = {
name: req.body.name,
password: req.body.password,
user: 'administrator'
};
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
res.render
will be executed first than pool.query
. So, basically you already tell that request is done without waiting pool.query
to finish.
A few seconds later, pool.query
is finished. Your issue is because your query encountered an error so it will go to next(err)
which is also tell that your request is done. This is invalid because you can't tell request is done more than one time. It causes Cannot set headers after they are sent to the client error message
.
The simple workaround is to move res.render
inside the pool.query
such as
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
return next(err); // we can just return here
}
res.render('review_papers');
});
You must be extra careful with callback function pool.query
. In the old codes,
data = {
name: req.body.name,
password: req.body.password,
user: 'administrator'
};
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
next(err);
return;
}
});
res.render('review_papers');
res.render
will be executed first than pool.query
. So, basically you already tell that request is done without waiting pool.query
to finish.
A few seconds later, pool.query
is finished. Your issue is because your query encountered an error so it will go to next(err)
which is also tell that your request is done. This is invalid because you can't tell request is done more than one time. It causes Cannot set headers after they are sent to the client error message
.
The simple workaround is to move res.render
inside the pool.query
such as
pool.query('INSERT INTO users SET ?', data, function (err, result) {
// If I omit this if statement it works fine
if (err) {
return next(err); // we can just return here
}
res.render('review_papers');
});
answered Nov 22 '18 at 4:09
deerawandeerawan
2,90241628
2,90241628
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53420285%2fcannot-set-headers-after-they-are-sent-to-the-client-error-message-why-do-i-get%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown