快速连接MongoDB并设计API

问题描述 投票:0回答:1
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");

我在名为 api.js 的服务器文件夹中创建了这个 API,然后使用了express和MongoDB。我尝试连接到 MongoDB 并在屏幕上显示记录,但当我输入 http://127.0.0.1:4000/getusers 并点击 enter 时,它会继续加载网站,并且不显示任何内容。我不知道为什么会这样。

mongodb express cors mern api-design
1个回答
0
投票

这是工作示例:

const express = require("express");
const app = express();
const { MongoClient } = require("mongodb");
const url = "mongodb://localhost:27017";
const client = new MongoClient(url);

const PORT = 5000;
// Database Name
const dbName = "reactdb";

app.use(express.json());

(async () => {
  await client.connect();
  const db = client.db(dbName);
  const collection = db.collection("tblusers");
})();

app.post("/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);
});
© www.soinside.com 2019 - 2024. All rights reserved.