Home > Enterprise >  Node Express.js Middleware, end Response
Node Express.js Middleware, end Response

Time:12-22

validateRegister: async (req, res, next) => {

        UserModel.findOne({email:req.body.email}, (err, example) => {
            console.log(example);
            if(err) console.log(err);
            if(example) {
                res.status(400).json({message: "Email already registered!"});
                res.end() //next('route')
            }
        });
        console.log("test");
        const user = new UserModel(req.body);
        await user.save((err) => {
            if (err) return res.status(500).json({ message: "Database issue!" });
        }); 

        next();
    },

Ok, I tried to insert user data if it is not already in the database using mongoose. If the User regarding the email is already in the database the response should be ended and the user not inserted. I tried to end the response with res.end() and next('route'), but nothing seems to work, the console.log("test") still runs.

Error:

events.js:353
      throw er; // Unhandled 'error' event
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:561:11)

Thanks for your help

CodePudding user response:

You can put It in condition if

CodePudding user response:

you can add return before returning response in the case of user email already found.

What seems to happen is that your program is calling res two times

  • Related