patch 方法在邮递员中返回“已确认”: false

问题描述 投票:0回答:1

我想更新我的 PATCH 请求中的产品。我在邮递员中收到了“确认”:错误的请求。

我收到状态代码 200

这是我的模型和补丁请求:

const mongoose = require("mongoose");

const productSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: String,
    price: Number
});

module.exports = mongoose.model("product", productSchema);
router.patch("/:productId", (request, response, next) => {
    const id = request.params.productId;
    const updateOps = {};
    for (const ops of request.body) {
        updateOps[ops.propName] = ops.value;
    }
    Product.updateOne({ _id: id }, { $push: { updateOps } })
        .exec()
        .then((result) => {
            console.log(result);
            response.status(200).json(result);
        })
        .catch((err) => {
            console.log(err);
            response.status(500).json({
                error: err,
            });
        });
});

我期待我的产品更新

javascript api rest mongoose
1个回答
0
投票

您的问题中缺乏信息,但从我看来,我的猜测是您使用了错误的运算符,因为

$push
仅用于将值推送到数组字段,我在中没有看到你的模型。如果您想更新(即更改字符串和数字字段的数据),您应该使用
$set
运算符。

https://www.mongodb.com/docs/manual/reference/operator/update/push/

https://www.mongodb.com/docs/manual/reference/operator/update/set/

© www.soinside.com 2019 - 2024. All rights reserved.