错误:发送后无法设置标题 [英] Error: Can't set headers after they are sent
本文介绍了错误:发送后无法设置标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试执行登录功能,但是错误:在发送标头后无法设置标头
一直显示在我的终端中,基于我的理解,此错误是由 res
,但我在代码中找不到错误.这是我到目前为止的内容:
I'm trying to do a login function but the Error: Can't set headers after they are sent
is keep showing up in my terminal, based on my understanding this error is causing by res
but I can't find the error in my code..
this is what I have so far:
this.handleLoginRequest = function(req, res, next) {
"use strict";
var data = req.body;
users.validateLogin(data, function(err, user) {
"use strict";
if(err) {
res.send(400, err.message);
}else{
sessions.startSession(data, function(err, session_id) {
"use strict";
if (err) return next(err);
res.cookie('session', session_id);
res.send(200);
});
}
});
}
validateLogin函数
this.validateLogin = function(data, callback) {
"use strict";
// Callback to pass to MongoDB that validates a user document
function validateUserDoc(err, user) {
"use strict";
if (err) return callback(err, null);
if (user) {
if (bcrypt.compareSync(data.password, user.password)) {
callback(null, user);
} else {
callback(new Error("Invalid password/email"), null);
}
}else{
// no such user error
callback(new Error("no such user"), null);
}
}
users.findOne({ '_id' : data.email }, validateUserDoc);
process.nextTick(function() {
callback(null, data);
});
}
推荐答案
传递给 validateLogin
的回调似乎被调用了两次:
It looks like the callback passed to validateLogin
is called twice:
- 一次来自
validateUserDoc
; - 一次来自
process.nextTick
回调(该部分似乎是一些剩余的代码);
- once from
validateUserDoc
; - once from the
process.nextTick
callback (that part seems to be some left-over code);
这篇关于错误:发送后无法设置标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文