in express development, we often encounter a problem:
User.findOne({
userName: userName
}, function (userErr, userDoc) {
if (userErr) {
return res.json({
status: "0",
msg: userErr.message,
result: ""
})
} else {
return res.json({
status: "1",
msg: "",
result: "user-error"
})
}
})
it keeps reporting this error:
Error: Can"t set headers after they are sent.
could you tell me how to solve this? You can"t even add return? How to do it.
add: the complete code of this interface:
router.post("/register", function (req, res, next) {
console.log(req.body);
if (req.body) {
//
function CurrentTime() {
var now = new Date();
var year = now.getFullYear(); //
var month = now.getMonth() + 1; //
var day = now.getDate(); //
var hh = now.getHours(); //
var mm = now.getMinutes(); //
var clock = year + "-";
// var clock = "";
if (month < 10)
clock += "0";
clock += month + "-";
if (day < 10)
clock += "0";
clock += day + " ";
if (hh < 10)
clock += "0";
clock += hh + ":";
if (mm < 10) clock += "0";
clock += mm;
return (clock);
};
//
let userName = req.body.name;
User.findOne({
userName: userName
}, function (userErr, userDoc) {
console.log("userDoc err")
if (userErr) {
console.log(":"+userName);
} else {
res.json({
status: "1",
msg: "",
result: "user-error"
})
return false;
}
})
//
let userPassword = req.body.pass;
let userCheckPassword = req.body.checkPass;
if (userPassword == userCheckPassword) {
//
let md5 = crypto.createHash("md5"); //crypto,MD5
let password = md5.update(userPassword).digest("hex"); //
} else {
console.log("password err")
res.json({
status: "0",
msg: "",
result: "password-error"
});
return false;
}
console.log(password);
let param = {
userCreatetime: CurrentTime(),
userName: userName,
userPassword: password,
userHostelArea: req.body.hostelArea,
userHostelAddress: req.body.hostelAddress,
userSex: req.body.sex,
userQQ: req.body.qq,
userState: "1"
};
User.create(param);
res.json({
status: "1",
msg: "",
result: "success"
});
} else {
console.log("req.body error")
res.json({
status: "0",
msg: "",
result: "error"
})
return false;
}
})
complete error returned:
GET /users/setSessionStorage 304 8.845 ms - -
GET /hostels 304 41.645 ms - -
{ name: "",
pass: "123456",
checkPass: "123456",
hostelArea: "",
hostelAddress: "R413",
sex: "",
qq: "123456" }
POST /users/register 500 26.365 ms - 2258
Error: Failed to lookup view "error" in views directory "E:\\ConvenientCampus\server\views"
at Function.render (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\application.js:580:17)
at ServerResponse.render (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\response.js:971:7)
at E:\\ConvenientCampus\server\app.js:89:7
at Layer.handle_error (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\layer.js:71:5)
at trim_prefix (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:315:13)
at E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:284:7
at Function.process_params (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:335:12)
at next (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:275:10)
at Layer.handle_error (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\layer.js:67:12)
at trim_prefix (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:315:13)
at E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:284:7
at Function.process_params (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:335:12)
at next (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:275:10)
at E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:635:15
at next (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\index.js:260:14)
at next (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\router\route.js:127:14)
userDoc err
events.js:183
throw er; // Unhandled "error" event
^
Error: Can"t set headers after they are sent.
at validateHeader (_http_outgoing.js:494:11)
at ServerResponse.setHeader (_http_outgoing.js:501:3)
at ServerResponse.header (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\response.js:730:10)
at ServerResponse.send (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\response.js:170:12)
at ServerResponse.json (E:\\ConvenientCampus\node_modules\_express@4.15.5@express\lib\response.js:256:15)
at E:\\ConvenientCampus\server\routes\users.js:80:13
at E:\\ConvenientCampus\node_modules\_mongoose@5.0.9@mongoose\lib\model.js:3930:16
at Immediate.<anonymous> (E:\\ConvenientCampus\node_modules\_mongoose@5.0.9@mongoose\lib\query.js:1514:14)
at Immediate._onImmediate (E:\\ConvenientCampus\node_modules\_mquery@3.0.0@mquery\lib\utils.js:119:16)
at runCallback (timers.js:789:20)
at tryOnImmediate (timers.js:751:5)
at processImmediate [as _immediateCallback] (timers.js:722:5)