簡體   English   中英

我怎樣才能將一組參數傳遞給路由?

[英]how can i pass an array of parameters to route?

我想使用我的 ejs 視圖中的復選框從 MySQL db 刪除一些行到 node.js 和 React 應用程序的路由。 我可以刪除一行,但如何傳遞參數數組?

這是我的路由器刪除功能:

router.get("/delete/:id", function (request, res, next) {
  var id = request.params.id;
  const sql = `DELETE FROM users WHERE id = "${id}" `;

這是帶有 id 的“刪除按鈕 html 代碼”,用於從 ejs 文件中刪除一行:

<a href="/users/delete/<%=data.id%>" class="btn btn-danger btn-sm">Delete</a>

我的桌子

我可以刪除一行,但不能一次刪除更多行。

首先,您應該使用 DELETE 而不是 GET 方法來刪除路由器中的單行。

您可以使用 POST 方法將一組輸入發送到服務器。 所以只需要為名稱為“shouldDelete[]”或您喜歡的其他名稱的每一行放置一個復選框。

使用括號將輸入數組發送到服務器很重要。 然后你應該使用<form>發送你的 POST 請求。

客戶:

<form action="/groupDelete" method="POST">
    <input type="checkbox" name="shouldDelete[]" value="ROW_ID_HERE" for="row1">
    <input type="checkbox" name="shouldDelete[]" value="ROW_ID_HERE" for="row2">
    <input type="checkbox" name="shouldDelete[]" value="ROW_ID_HERE" for="row3">
    <button type="submit">Send</button>
</form>

服務器:

router.post("/groupDelete", function (request, res, next) {
  var groupIds = request.body.shouldDelete;
  const sql = `DELETE FROM users WHERE id IN ("${groupIds.join(',')}") `;

注意:查詢數據庫時請遵守安全注意事項。

      const urlencodedParser = express.urlencoded({ extended: false });   

   router.post("/groupDelete", urlencodedParser, function (request, res, next) {
      var groupIds = request.body.shouldDelete;
      const sql = `DELETE FROM users WHERE id IN (${groupIds.join(",")}) `;
      console.log(sql);
      db.query(sql, function (err, data) {
        if (err) {
          throw err;
        } else {
          res.redirect("/users/user-list");
        }
      });
    });


    <form action="/users/groupDelete" method="POST">
      <input
        type="checkbox"
        name="shouldDelete"
        id="34"
        value="34"
        for="row1"
      />
      <input
        type="checkbox"
        name="shouldDelete"
        id="36"
        value="36"
        for="row3"
      />
      <button type="submit">Send</button>
    </form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM