【问题标题】:Express not recognizing correct request body from Postman on PUT requestExpress 在 PUT 请求中无法识别来自 Postman 的正确请求正文
【发布时间】:2019-07-14 19:51:16
【问题描述】:

我正在使用 Express 和 MongoDB 开发一个极其简单的 CRUD 后端。它甚至没有前端,我只是使用 Postman 来验证每个请求是否按预期工作。到目前为止,这是我的单页应用程序的样子:

server.js

const express = require('express')
const bodyParser = require('body-parser')
const MongoClient = require('mongodb').MongoClient

let ObjectId = require('mongodb').ObjectId;

const app = express()
const uri = 'mongodb+srv://<USER>:<PW>@<REDACTED>.mongodb.net/test?retryWrites=true'

let db

MongoClient.connect(uri, { useNewUrlParser: true }, (err, client) => {
  if (err) return console.log(err)
  db = client.db(<COLLECTION_NAME>)
    app.listen(3000, () => {
      console.log('Listening on port 3000')
    })
})

app.put('/todo', (req, res) => {
   db.collection('todo').updateOne({_id: 
      ObjectId(req.body.id)}, {
       $set: {item: req.body.value}
   }, (err, result) => {
        if (err) return console.log(err)
        res.send('Todo updated')
   })
})

我已经使用有效的 POST 请求(未显示)在 MongoDB Atlas 中填充了集群的集合。这是我在本地运行服务器后在 Postman 中尝试的内容:

现有Todo的id在Atlas集群中是明确定义的,但是当我在server.js中PUT请求的回调函数的第一行记录req.body.value的值时,它显示的是现有值那是在该集群的 Todo 中,而不是通过 Postman 实际提供的内容。为什么此请求无法识别来自 Postman 的请求正文?

【问题讨论】:

    标签: javascript node.js mongodb express postman


    【解决方案1】:

    This post 有助于找出问题所在。我需要导入 bodyParser.json() 中间件并将其包含在 PUT 请求中。然后我在 Postman 客户端中使用 raw json 成功发送 PUT 请求。

    【讨论】:

      猜你喜欢
      • 2021-09-24
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多