【问题标题】:Postman PUT method not updating dataPostman PUT 方法不更新数据
【发布时间】:2022-07-17 10:33:11
【问题描述】:

Put 方法实际上以 200 OK 响应,但 db 中的数据没有更新,我使用的是 mongoDB。 这是 product.js 文件:

router.put('/products/:id', async (req, res) => {
    try {
        let product = await Product.findOneAndUpdate({_id: req.params.id}, {
            $set: {
                title: req.body.title,
                price: req.body.price
            }
        }, {upsert: true})
        
        res.json({
            success: true,
            updatedProduct: product
        })
    } catch(err) {
        res.status(500).json({
            success: false,
            message: err.message
        })
    }
})

这是邮递员的图像,响应是 200OK,但是当我刷新并检查 mongoDB 时,数据仍然相同。 https://i.stack.imgur.com/asUoV.png

这是来自 server.js 文件的代码。

const express = require('express')
const morgan = require('morgan')
const bodyParser = require('body-parser')
const mongoose = require('mongoose')
const dotenv = require('dotenv')

// importing user
const User = require('./models/user')

// env file
dotenv.config()

const app = express()

// connect mongoDB
mongoose.connect(process.env.DATABASE, (err) => {
    if(err) {
        console.log(err)
    } else {
        console.log('connected to database')
    }
})

// middleware
app.use(morgan('dev'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))

// require apis
const productRoutes = require('./routes/product')
const categorytRoutes = require('./routes/category')
const ownerRoutes = require('./routes/owner')

app.use('/api', productRoutes)
app.use('/api', categorytRoutes)
app.use('/api', ownerRoutes)

// Initial response
app.get('/', function(req, res, next) {
    res.send("Hello world");
})

app.listen(8080, (err) => {
    if(err) {
        console.log(err)
    }
})

【问题讨论】:

  • 你能展示一个邮递员请求的例子/截图吗?另外,您添加了什么请求正文解析中间件,例如app.use(express.json()) / app.use(express.urlencoded()) / 其他?
  • 嗨@Phil,我更新了问题。谢谢你的回答。
  • 啊,您发送的是multipart/form-data 格式的请求正文。在 Postman 中选择 x-www-form-urlencoded 单选按钮。见learning.postman.com/docs/sending-requests/requests/…
  • 成功了!我花了一个多小时,不知道应该是什么问题。谢谢。

标签: node.js postman put


【解决方案1】:
router.put('/products/:id', async (req, res) => {
try {
const updatedProduct = await Product.updateOne({ _id: req.params.id},
{ $set: { title: req.body.title,price: req.body.price });
res.status(200).send("updated successfully");} 
catch (err) {
res.status(400).json({ message: err.message });

} });

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 2019-04-25
    • 2016-10-12
    • 1970-01-01
    • 2014-05-27
    • 2013-11-16
    • 2022-06-25
    • 1970-01-01
    相关资源
    最近更新 更多