Reputation: 553
I'm having issues making a request to this route. I don't want to put everything in one file as i want to separate concerns.
But when i import the route into the server file, it still gives a 404 status. Please can someone helpe me out on this please!
This is my login route file:
//Set up
let express = require("express");
let app = express();
let logger = require("morgan");
let bodyParser = require("body-parser");
let cors = require("cors");
let database = require("./database");
let staffModel = require("./schema");
// Endpoint for the login function
app.use(cors());
const { body, validationResult } = require('express-validator/check');
const { sanitizeBody } = require('express-validator/filter');
const { trim } = require('express-validator').validator;
app.use(bodyParser.urlencoded({extended: false})); //Parses urlencoded
bodies
app.use(bodyParser.json()); //Send JSON responses
app.use(logger('dev')); // Log requests to API using morgan
let login = require("./routes/login");
app.use("/login", login);
app.listen(8080);
console.log("Trazeapp Started, listening on port 8080");
This is my login route file.
//Set up
let express = require("express");
let router = express.Router();
router.post("/login", function(req, res){
req.body.username = trim(req.body.username);
staffModel.find({"login.username": req.body.username},
{"login.username":1,"login.password":1,"admin":1})
.then(data=> {
if (data.length == 0){
res.send({"error": "There's no staff with this username"})
} else{
// Get the individual values
let uname = data[0].login.username.toString();
let pwd = data[0].login.password.toString();
let adm = data[0].admin.toString();
// If user and password is correct
if((req.body.username == uname) && (req.body.password ==
pwd)){
//Login information is correct
//Check the privilege of who is loggin in
if(adm == "yes"){
console.log("inside yes");
res.send({"username": uname, "password": pwd,
"admin": true});
}
else if(adm == "no"){
console.log("admin is: " + adm);
res.send({"username": uname, "password": pwd,
"admin": false});
}
}
else if((req.body.username != uname) || (req.body.password
!= pwd)){
//Username and/or password is wrong
res.send({"error": "Your Username and/or Password is
wrong."});
}
}
})
.catch(err=> res.send({"error": "There's an issue with the
server."}))
});
module.exports = router;
Upvotes: 0
Views: 158
Reputation: 707158
Change your route definition from this:
router.post("/login", ...)
to this:
router.post("/", ...)
The /login
is already specified here:
app.use("/login", login);
Which means that all routes in your router are already prefixed with /login
.
So, your code was creating a route for /login/login
which is not what you want.
FYI, you could also just change from this:
app.use("/login", login);
to this:
app.use("/", login);
Though it probably makes more sense to keep your whole login router on /login.
Upvotes: 1