DUSHAN ANURADHA
DUSHAN ANURADHA

Reputation: 55

Postman requests are not working (Node.JS and MongoDB)

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

Answers (1)

Anatoly
Anatoly

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

Related Questions