I am trying to have a register form create a JWT token when the user submits but I get the error
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
because I send 2 responses in my sign up.
exports.signup = async (req, res, next)=> {
const {email} = req.body;
const userExist = await User.findOne({email});
if (userExist) {
return next(new ErrorResponse(`Email already exists`, 404))
}
try {
const user = await User.create(req.body);
res.status(201).json({
success: true,
user,
})
//this is the second request but how do I combine it with the code up top to be one request?
generateToken(user, 200, res);
} catch (error) {
console.log(error);
next(error);
}
}
//my generate token method
const generateToken = async (user, statusCode, res) => {
const token = await user.jwtGenerateToken();
var hour = 3600000;
const options = {
httpOnly: true,
expires: new Date(Date.now() + hour)
};
res.status(statusCode)
.cookie('token', token, options)
.json({success: true, token})
}