![](/img/trans.png)
[英]Trouble with a PUT request not updating the entry using MongoDB, Node and Express
[英]Node rest API: put request is not updating the request data
尝试使用 PUT 请求更新数据。 但是,数据不会更新并返回 postman 中的先前数据。
Postman 提出要求:
http://localhost:3000/api/actors/5daa8f1c5845ad0b5826b8d9?name=Tom
Postman 响应:
{
"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。 没有得到结果。 任何帮助,将不胜感激。
Controller:
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);
您的 postman 请求是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);
});
要解决 ObjectId 错误,请使用以下代码。
var mongoose = require('mongoose');
const updateActor = await Actor.findOneAndUpdate({"_id":mongoose.Types.ObjectId(actorId)},data, { new: true });
res.send(updateActor);
exports.updateActor = async(req, res, next) => {
try {
const actorId = req.params.actorId;
const data = req.body;
const updateActor = await Actor.update({"_id":actorId},data);
// res.status(200).json({ message: "Data has Updated Successfully!" });
res.send(updateActor);
} catch (err) {
res.status(500).json({ message: err.message });
}
};
try thiss...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.