猿问

节点休息 API:放置请求未更新请求数据

尝试使用 PUT 请求更新数据。但是,数据不会更新并返回邮递员中的先前数据。


邮递员提出请求:


http://localhost:3000/api/actors/5daa8f1c5845ad0b5826b8d9?name=Tom

邮递员回复:


{

    "createdAt": "2019-10-19T04:16:13.317Z",

    "updatedAt": "2019-10-19T04:16:13.317Z",

    "_id": "5daa8f1c5845ad0b5826b8d9",

    "name": "scarlett johansson",

    "birthday": "1980-10-14T00:00:00.000Z",

    "country": "usa",

    "__v": 0

}

我也尝试过使用 findByIdAndUpdate。没有得到结果。任何帮助,将不胜感激。


控制器:


exports.updateActor = async(req, res, next) => {

    try {

        const actorId = req.params.actorId;

        const data    = req.body;


        const updateActor = await Actor.findById(actorId);


        updateActor.set(data);


        const actor = await updateActor.save();


        // res.status(200).json({ message: "Data has Updated Successfully!" });

        res.send(actor);


    } catch (err) {

        res.status(500).json({ message: err.message });

    }

};

路由器:


router.put('/actors/:actorId', Actor.updateActor);


森林海
浏览 163回答 3
3回答

富国沪深

要解决 ObjectId 错误,请使用以下代码。var mongoose = require('mongoose');const updateActor = await Actor.findOneAndUpdate({"_id":mongoose.Types.ObjectId(actorId)},data, { new: true });res.send(updateActor);

拉莫斯之舞

您的邮递员请求http://localhost:3000/api/actors/5daa8f1c5845ad0b5826b8d9?name=Tom看起来像是要更新的数据req.query而不是req.body.注意:您应该将要更新的数据放在正文中,而不是像您现在所做的那样进行查询。更多信息在这里。

白衣非少年

Please use following code for getting update data  Actor.findOneAndUpdate({"_id":ObjectId(actorId)},data,  { new: true}).then((updatedData) => { res.send(updatedData); });
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答