【问题标题】:How to send message in DELETE route - express.js如何在 DELETE 路由中发送消息 - express.js
【发布时间】:2018-07-01 22:48:03
【问题描述】:

我想在删除用户后显示消息,但我不知道该怎么做。我尝试创建 req.session 属性然后使用它们,但它们在 GET 路由中不可用。您知道如何修复此代码吗?

router.get("/", mid.isExpired, mid.isLoggedIn, mid.isAdmin, (req, res) => {
  let currentMessage = req.session.message;
  let currentState = req.session.state;
  req.session.message = undefined;
  req.session.state = undefined;
  console.log(currentState, currentMessage); //undefined
  user.getAll()
    .then(result => {
      res.render("users", {
        name: req.user,
        users: result,
        msg: currentMessage,
        state: currentState
      })
    })
});


// delete route

router.delete("/delete/:id", mid.isExpired, mid.isLoggedIn, mid.isAdmin, (req, res) => {
  user.del(req.params.id)
    .then(() => {
      req.session.message = "Some message!"
      req.session.state = true;
    })
});

// jquery 

function ajaxDelete(ev, url) {
  ev.preventDefault();
  $.ajax({
    url: url,
    type: "DELETE"
  });
}

delBtn.click(function(e) {
  var user = $(this).data("user");
  ajaxDelete(e, "/users/delete/" + user);
  window.location.href = "/users";
})

【问题讨论】:

    标签: javascript jquery node.js express


    【解决方案1】:

    在您的场景中,据我了解,您希望发送 JSON 作为响应。您可以使用此代码

    router.delete("/delete/:id", mid.isExpired, mid.isLoggedIn, mid.isAdmin, (req, res) => {
      user.del(req.params.id)
        .then(() => {
          var response = { message : "Some message!",
                           state   : true };
          return res.json(response);
        })
    });
    

    关键字'return'是根据您的要求

    【讨论】:

      【解决方案2】:

      router 和 session 是任何 nodeJs 应用程序的中间件,如果在 session 之前添加路由器,如下所示:

      app.use(router)
      app.use(session(...));
      

      然后会话中间件不会被路由器处理的任何请求调用。 因此改变添加路由器和会话中间件的顺序,像这样

      app.use(session(...));
      app.use(router)
      

      【讨论】:

        【解决方案3】:

        使用 res 参数,并创建一个名为 message 的变量

        const message= 'MyMessage';
        

        然后

        res.json ({message}) // es6 feature
        

        输出

        {"message":"myMessage"}
        

        【讨论】:

          猜你喜欢
          • 2022-01-19
          • 1970-01-01
          • 2020-02-17
          • 2017-05-19
          • 2014-09-14
          • 2015-09-22
          • 1970-01-01
          • 2021-03-11
          • 1970-01-01
          相关资源
          最近更新 更多