Search code examples
mongodbexpresscorsmernapi-design

Express Connection With MongoDB and Designing APIs


var express = require("express");
var cors = require("cors");
var mongoClient = require("mongodb").MongoClient;

var connectionString = "mongodb://127.0.0.1:27017";

var app = express();
app.use(cors());
app.use(express.urlencoded({
  extended:true
}));
app.use(express.json());

app.get("/getusers", (req, res)=>{
  mongoClient.connect(connectionString, (err, clientObj)=>{
    if (!err) {
      var database = clientObj.db("reactdb");
      database.collection("tblusers").find({}).toArray((err, documents) => {
          if (!err) {
            res.send(documents);
          }
        })
    }
  })
});

app.post("/registeruser", (req, res)=>{
  var userdetails = {
    UserId: req.body.UserId,
    UserName: req.body.UserName,
    Password: req.body.Password,
    Age: parseInt(req.body.Age),
    Mobile: req.body.Mobile,
    Subscribed: (req.body.Subscribed === "true")?true:false
  };
  mongoClient.connect(connectionString,(err, clientObj)=>{
    if(!err){
      var database = clientObj.db("reactdb");
      database.collection("tblusers").insertOne(userdetails,(err, result)=>{
        if(!err){
          console.log("Record Inserted...");
          res.redirect("/getusers");
        }
      })
    }
  })
})

app.listen(4000);
console.log("Server Started : http://127.0.0.1:4000");

I made this API inside the server folder named api.js and then used express and MongoDB. I tried to Connect to MongoDB and show the records on the screen, but it keeps on loading the site when I type http://127.0.0.1:4000/getusers and hit enter and doesn't show anything. I don't know why it is happening.


Solution

  • Here is the working example :

    const express = require("express");
    const app = express();
    const { MongoClient } = require("mongodb");
    const cors = require('cors');
    const url = "mongodb://localhost:27017";
    const client = new MongoClient(url);
    
    const PORT = 5000;
    // Database Name
    const dbName = "reactdb";
    app.use(cors());
    app.use(express.urlencoded({
      extended:true
    }));
    
    app.use(express.json());
    
    client
      .connect()
      .then(() => {
        console.log("database connected successfully");
      })
      .catch(() => client.close());
    
    app.get("/getusers", async (req, res) => {
      var database = client.db(dbName);
      let result = await database.collection("tblusers").find().toArray();
      return res.status(200).json({
        msg: "record fetched successfully",
        data: result,
      });
    });
    
    app.post("/registeruser", async (req, res) => {
      let userdetails = {
        UserName: req.body.UserName,
        Password: req.body.Password,
        Age: parseInt(req.body.Age),
        Mobile: req.body.Mobile,
        Subscribed: req.body.Subscribed === "true" ? true : false,
      };
    
      var database = client.db(dbName);
      let result = await database.collection("tblusers").insertOne(userdetails);
    
      if (result.acknowledged) {
        return res.status(200).json({
          msg: "record inserted successfully",
        });
      }
    
      res.status(400).json({ msg: "internal server error" });
    });
    
    app.listen(PORT, () => {
      console.log("server listening on : " + PORT);
    });