【问题标题】:Postman POST request stuck on "sending request" (MongoDB and Node.js)Postman POST 请求停留在“发送请求”上(MongoDB 和 Node.js)
【发布时间】:2021-09-10 03:03:19
【问题描述】:

我一直在尝试使用 node.js 和 MongoDB 进行 CRUD 操作,但是在 Postman 上发送 POST 请求后,它似乎卡在“发送请求”上。

对于邮递员请求,我用来发出 POST 请求的 url 是: http://localhost:3000/api/employee/store

在正文部分,我选择了 raw -> JSON 格式

{
    "name" : "testname",
    "designation" : "Software Engineer",
    "email" : "test@gmail.com",
    "phone" : "1233123",
    "age" : 320
}

下面是我的代码:

server.js

const express = require('express');
const mongoose = require('mongoose'); // Working with mongoDB Db
const morgan = require('morgan'); 
const bodyParser = require('body-parser'); //Get submitted input 
const app = express();


const EmployeeRoute = require('./routes/employee')
mongoose.connect('mongodb://localhost:27017/testdb',{useNewUrlParser : true, useUnifiedTopology:true})
const db = mongoose.connection


db.on('error', (err) =>{
    console.log(err);
})

db.once('open',()=>{
    console.log("Database Connection Established!");
})



app.use(morgan('dev'));

app.use(express.urlencoded({
    extended : true
}));

app.use(express.json);

const PORT = process.env.PORT || 3000;

app.listen(PORT, ()=>{
    console.log('Server is running on port ' + PORT);
});

app.use('/api/employee', EmployeeRoute)

EmployeeController.js

const Employee = require('../models/Employee')

//Show the list of Employees
const index = (req,res,next)=>{
    Employee.find()

    .then(response =>{
        res.json({
            response
        })
    })
    .catch(error =>{
        res.json({
            message : 'An error has occured!'
        })
    })
}

//Show single employee
const show = (req,res,next)=>{
    let employeeID = req.body.employeeID
    Employee.findById(employeeID)
    .then(response =>{
        res.json({
            response
        })
    })

    .catch(error=>{
        res.json({
            message : "An error has occured!"
        })
    })
}


//Function to store employee details
const store = (req,res,next) =>{
    let employee = new Employee({
        name : req.body.name,
        designation: req.body.designation,
        email : req.body.email,
        phone : req.body.phone,
        age : req.body.age
    })

    employee.save()

    .then(response=>{
        res.json({
            message : "Employee added sucessfully!"
        })
    })

    .catch(error=>{
        res.json({
            message : "An error has occured!"
        })
    })
}

//Function to update employee
const update = (req,res,next) => { 
   let employeeID = req.body.employeeID

   let updatedData = {
    name : req.body.name,
    designation: req.body.designation,
    email : req.body.email,
    phone : req.body.phone,
    age : req.body.age
   }

    Employee.findByIdAndUpdate(employeeID, {$set : updatedData})

    .then(() => {
        res.json({
            message : "Employee updated sucessfully!"
        })
    })

    .catch(error=>{
        res.json({
            message : "An error has occured!"
        })
    })
}

//Delete an Employee
const destroy= (req,res,next) =>{
    let employeeID = req.body.employeeID
    Employee.findByIdAndRemove(employeeID)

    .then(() =>{
        req.json({
            message : 'Employee successfully deleted!'
        })
    })

    .catch(error =>{
        req.json({
            message : "An error has occured!"
        })
    })
}

module.exports = {
    index, show, store, update, destroy
}

employee.js(模型)

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const employeeSchema = new Schema({
    name: {
        type : String
    },
    designation: {
        type: String 
    },
    email: {
        type: String
    },
    phone: {
        type: String
    },
    age: {
        type: Number
    }
}, {timestamps : true})

const Employee = mongoose.model('Employee', employeeSchema)
module.exports = Employee

employee.js(路由)

const express = require('express')
const router = express.Router()

const EmployeeController = require('../controllers/EmployeeController')

router.get('/', EmployeeController.index)
router.post('/show', EmployeeController.show)
router.post('/store', EmployeeController.store)
router.post('/update', EmployeeController.update)
router.post('/delete', EmployeeController.destroy)

module.exports = router

【问题讨论】:

    标签: node.js mongodb mongoose postman


    【解决方案1】:

    你已经接近了,这一行只有 1 个错误:

    app.use(express.json);
    

    应该是:app.use(express.json());

    文档页面,如果您需要它:http://expressjs.com/en/api.html#express.json

    【讨论】:

    • 啊,在我这边真是个愚蠢的错误。现在可以使用了,谢谢!
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2021-08-18
    • 2012-07-23
    • 1970-01-01
    • 2019-03-09
    • 2022-10-20
    相关资源
    最近更新 更多