当前位置: 首页 > 知识库问答 >
问题:

节点RestAPI:放请求不更新请求数据

夏烨霖
2023-03-14

尝试使用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);

共有3个答案

曹高轩
2023-03-14
Please use following code for getting update data 

 Actor.findOneAndUpdate({"_id":ObjectId(actorId)},data, 
 { new: true}).then((updatedData) => {
 res.send(updatedData);
 });
司徒斌
2023-03-14

您的邮递员请求是http://localhost:3000/api/actors/5daa8f1c5845ad0b5826b8d9?name=Tom所以看起来要更新的数据将在req中。查询而不是req。正文

注意:应该将要更新的数据放在正文中,而不是像现在这样进行查询。

更多信息请点击这里。

嵇浩然
2023-03-14

要解决ObjectId错误,请使用以下代码。

var mongoose = require('mongoose');
const updateActor = await Actor.findOneAndUpdate({"_id":mongoose.Types.ObjectId(actorId)},data, { new: true });
res.send(updateActor);
 类似资料:
  • 当没有响应返回时,我需要超时我的RESTAPI。例如,当我发出请求时,如果返回响应需要5秒钟以上,则超时。 为了实现这一点,我选择了使用Hystrix的断路器。但我不确定这是否是解决此问题的正确方法,如果一切都好,是否应该对Hystrix进行更多配置? 我当前的实现看起来像, 主类 RestController 应用程序属性 当超时时,它抛出一个HystrixRunTimeException,并由

  • 检查这个的步骤 添加相关信息如下,我正在设置show_mature和newsletter_subscribedtrue 预期:将show_mature和newsletter_subscribed值设置为true实际:show_mature和newswetter_sSubscribed的值为false 如果有人能让我知道为什么会发生这种情况,我会非常感激吗?谢谢

  • 我对Android系统是新手。我想上传图像作为表单数据使用改型后的方法。我正在使用 这是我的请求体。

  • 问题内容: 如何使用与以下代码等效的node.js发出Http请求: 问题答案: 使用http客户端。 遵循以下原则:

  • 我正在尝试在后端节点中发出http请求。js web app。我可以在前端web javascript文件上发出成功的完整http请求,如下所示: 并遵循本指南:https://nodejs.dev/learn/make-an-http-post-request-using-nodejs 我一直试图在node中发出相同的请求。js后端: 但运行上述请求会导致以下错误: 我设置url/path设置的

  • 我正在更新APIendpoint中的数据。正如我所说,我使用表单请求验证将验证与控制器分开。 这适用于存储请求。 但是,当我试图更新下面提到的单个数据时,响应返回以下响应数据。 因为,数据已经存储在数据库中。当我发送更新数据的请求时...应该返回更新的数据。但是,它不返回。 需要帮助来解决这个问题。 正文中的JSON数据: 当前响应: 问题要求: 更新: