Я работаю над чрезвычайно простым бэкэндом CRUD с использованием Express и MongoDB.У него даже нет внешнего интерфейса, и я просто использую 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')
})
})
Я уже заполнил коллекцию своего кластера в MongoDB Atlas с помощью POSTзапрос (не показан), который работает.Вот что я пробовал в Postman после локального запуска сервера:
Идентификатор существующего Todo четко определен в кластере Atlas, но когда я записываю значение req.body.value
в первой строке функции обратного вызова запроса PUT в server.js, оно показывает существующее значение, котороев Todo в этом кластере, а не то, что на самом деле поставляется через Почтальон.Почему тело запроса от Почтальона не распознается по этому запросу?