【发布时间】: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