I am trying to create a simple login api using node js and express, however postman is giving the following error
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Cannot GET /login/</pre> </body> </html>
however my signup api is working fine and I can create my user profile and am getting response
code that I have written for login is as follows:
exports.verifyuser = (req, res) => { User.findOne({email:req.body.email}) .then(user => { if(!user) { return res.status(404).send({ message:"no user with email id found" }); } res.send(user); }).catch(err => { if(err.kind === 'ObjectId') { return res.status(404).send({ message: "Note not found with id " }); } return res.status(500).send({ message: "Error retrieving note with id " }); }); };
signup api:
// create user exports.createuser = (req, res) => { // Validate request if(!req.body.email) { return res.status(400).send({ message: "Email can not be empty" }); } // Create a Note const note = new User({ email: req.body.email || "Untitled Email", password: req.body.password }); // Save Note in the database note.save() .then(data => { res.send(data); }).catch(err => { res.status(500).send({ message: err.message || "Some error occurred while creating the profile." }); }); };
routes are as follows:
// create user app.post('/signup',cors(),content.createuser); // verify user app.get('/login/:email',cors(),content.verifyuser);
I am very new to express, hence unable to rectify where have I gone wrong. Kindly help me out here.
Advertisement
Answer
The error (from Postman) suggests you tried to access route /verify
. But you don’t seem to have a /verify
route (your question only shows /signup
and /login/:email
routes).
Also, in verifyuser
, you might need to change this line:
User.findOne({ email: req.body.email })
to:
User.findOne({ email: req.params.email })
This is because the email is captured as a named route parameter (in /login/:email
), so should be available under req.params
(not req.body
). (req.body
doesn’t make sense here since the handler is for GET requests, which won’t have a body.)
Once that’s done, restart the server, send a GET request via Postman to something like /login/ABC
(just an example) and then see if you get a response like: "no user with email id found"
.