Reputation: 55
I have been doing following beginner-level coding exercise on Node and Mongo. I am trying to test the server using postman adding sample inputs. For post and get requests, postman produces no results and saying Cannot POST /users/add and Cannot GET /users/ . But, MongoDB is connected.
server.js
const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
require("dotenv").config();
const app = express();
const port = process.env.port || 5000;
app.use(cors());
app.use(express.json());
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
});
const connection = mongoose.connection;
connection.once("open", () => {
console.log("MongoDB connection established successfully..");
});
const usersRouter = require("./routes/users");
app.use("./users", usersRouter);
app.listen(port, () => {
console.log(`Server is running in port: ${port}`);
});
users.js
const router = require("express").Router();
let User = require("../models/user.model");
router.route("/").get((req, res) => {
User.find()
.then((users) => res.json(users))
.catch((err) => res.status(400).json("Error: " + err));
});
router.route("/add").post((req, res) => {
const username = req.body.username;
const newUser = new User({ username });
newUser
.save()
.then(() => res.json("User added!!"))
.catch((err) => res.status(400).json("Error: " + err));
});
module.exports = router;
user.model.js
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const userSchema = new Schema(
{
username: {
type: String,
required: true,
unique: true,
trim: true,
minlength: 3,
},
},
{
timestamps: true,
}
);
const User = mongoose.model("UseX", userSchema);
module.exports = User;
Upvotes: 0
Views: 493
Reputation: 22758
You should remove .
from a route path. The route path is already relative and .
makes no sense for a relative URL:
app.use("/users", usersRouter);
Upvotes: 3