javascript 无法使用超链接GET /delete/postid错误node.js

zpjtge22  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(138)

我正在使用超链接删除我在主.ejs模板中显示的项目,但当我单击删除超链接时,它显示“Cannot GET /delete/6424 f79 c7 dd 4cd 07 ef 49 acae”错误。以下是我的超链接的代码:
main.ejs:

<%  posts.forEach(function(post){ %>
<h3><%=post.title%></h3>
<p>
  <%=post.content.substring(0, 100) + " ..."%>
  <a href="/posts/<%=post._id%>">Read More ... </a>
  <% if (adminUser) { %>
  <a href="/delete/<%= post._id %>"method="DELETE">Delete</a>
</p>
<% } %>
<% }) %>

下面是app.js中的get请求:

app.get('/delete/:postid', isLoggedIn, function(req, res) {
  const { postId } = req.params.postid;
  ProjectDetails.findByIdAndDelete({
    _id: postId,
    function(err) {
    if (err) {
      console.log(err);
    } else {
      res.redirect('/main');
    }
    };
  });
});

我曾经寻找过解决方案,但其中很多似乎都涉及到我不熟悉的restful api。有没有其他方法可以解决这个问题?

dldeef67

dldeef671#

函数内部的第一行是错误的。使用

const { postId } = req.params

const postId = req.params.postId

在请求中获得超时的原因是,在任何错误情况下,您都不会发送回复。
如果您不发送回复,客户端在请求GET /...时将出现超时错误。
您应该始终发送回复,即使是在错误情况下,因此只需记录节点应用程序的错误并将客户端重定向到/main

if (err) {
      console.log(err);
    }
    res.redirect('/main');

相关问题