返回

使用 NodeJS 从 HTML 表单执行 PATCH/PUT 请求更新 MongoDB 数据

javascript

用NodeJS从HTML表单执行PATCH请求:指南和最佳实践

在现代网络开发中,更新服务器上的数据是至关重要的。本文将指导你使用NodeJS从HTML表单执行PATCH请求,这是一种用于更新部分数据记录的HTTP方法。

NodeJS API结构

app.route("/requests/:rollno")
  .get(function(req, res) {
    // get method to find a query
  })
  .patch(function(req, res) {
    Request.update({
        rollno: req.params.rollno
      }, {
        $set:req.body
      },
      function(err) {
        if (!err) {
          res.send("Successfully updated requests");
        }else{
          res.send(err);
        }
      }
    );
  });

PATCH端点 :此端点接收一个带有更新数据的请求正文,并使用 $set 操作符更新具有指定 rollno 的记录。

前端表单代码

<form action="/requests/21" method="PATCH">
  <input type="text" name="status[0]">
  <div id="participant"></div>
  <br>
  <button type="button" onclick="addParticipant()">Add</button>
  <button type="button" onclick="delParticipant()">Remove</button>
  <div class="btn-block">
    <button type="submit" href="/success">Submit Request</button>
  </div>
</form>

表单 :此表单包含一个文本输入字段(用于更新状态),一个动态添加参与者的元素(#participant),以及添加、删除参与者的按钮。提交按钮的 href 属性应更改为 action,指向PATCH端点。

问题和解决方案

尝试从表单执行PATCH请求时遇到的一个常见问题是更新不起作用。这是因为表单的 action 属性指向了一个无效的端点。它应该指向PATCH端点,例如 /requests/21

备选方法:PUT请求

除了PATCH请求外,你还可以使用PUT请求来更新记录。PUT请求将替换现有记录的整个内容,而PATCH请求仅更新指定的字段。

NodeJS API

app.route("/requests/:rollno")
  .put(function(req, res) {
    Request.findOneAndUpdate({
        rollno: req.params.rollno
      }, req.body,
      function(err, updatedRequest) {
        if (!err) {
          res.send("Successfully updated request");
        }else{
          res.send(err);
        }
      }
    );
  });

前端表单

<form action="/requests/21" method="PUT">

结论

使用NodeJS执行PATCH或PUT请求来更新MongoDB数据库中的记录是一个常见的任务。通过遵循本文中概述的步骤,你可以有效地实施这些请求,确保你的应用程序能够更新数据并满足用户的需求。

常见问题解答

1. 什么是PATCH请求?
答:PATCH请求是一种HTTP方法,用于更新部分数据记录。

2. 什么是PUT请求?
答:PUT请求是一种HTTP方法,用于替换现有数据记录的整个内容。

3. 如何从HTML表单执行PATCH请求?
答:在HTML表单中,将表单的 action 属性设置为PATCH端点,并使用 $set 操作符将更新数据发送到服务器。

4. 如何从HTML表单执行PUT请求?
答:在HTML表单中,将表单的 action 属性设置为PUT端点,并使用 findOneAndUpdate() 方法替换现有记录。

5. 我在哪里可以找到有关NodeJS API的更多信息?
答:有关NodeJS API的更多信息,请参阅官方文档:https://expressjs.com/en/api.html