使用 NodeJs 在 MongoDB 中更新操作

Update Operation in MongoDB with NodeJs

我正在使用 CRUD 操作开发博客网站,我能够实现 CRD 操作,但更新一有问题。

问题:-

当我点击编辑按钮时,它会打开撰写选项卡并成功加载文本文件,但是当我点击更新时,它会重定向到主页但没有任何更新,请帮我摆脱这个。

//This is the code for edit & Update Route 
        app.get("/posts/:postId/edit", (req, res) => {
      Post.findById(req.params.postId, (err, post) => {
        if (err) {
          console.log(err);
        } else {
          res.render("edit", { post: post });
        }
      });
    });
    app.post("/posts/:postId/edit", (req, res) => {
      Post.findByIdAndUpdate(
        req.params.postId,
        {
          $set: {
            title: req.body.title,
            content: req.body.content,
          },
        },
        (err, update) => {
          if (err) {
            console.log(err);
          } else {
            console.log("Post Updated");
            res.redirect("/");
          }
        }
      );
    });

表格为Edit/Update

//This is the Edit ejs file containing the update form 
 <form action="/posts/<%=post._id%>/edit/?_method=PUT" method="post">
            <div class="mb-3">
                <label for="post-title">Title</label>
                <input class="form-control" id="post-title" name="postTitle" type="text" placeholder="Input title"
                    required autocomplete="off" value="<%=post.title%>">
            </div>
            <div class="mb-3">
                <label for="postcontent">Post</label>
                <textarea class="form-control text-area" id="postcontent" name="blog" rows="4" cols="50" required
                    placeholder="Start writing your blog ..............."><%=post.content%></textarea>
            </div>
            <button class="btn btn-primary publish-btn" type="submit" name="button">Update</button>
        </form>

您的错误来自 Ejs

您没有重命名您的 req.body 井以匹配您的传入数据

你应该使用标题而不是 postTitle

和内容而不是博客

只需将您的 ejs 编辑为此并测试 gee

 <form action="/posts/<%=post._id%>/edit/?_method=PUT" method="post">
        <div class="mb-3">
            <label for="post-title">Title</label>
            <input class="form-control" id="post-title" name=“title" type="text" placeholder="Input title"
                required autocomplete="off" value="<%=post.title%>">
        </div>
        <div class="mb-3">
            <label for="postcontent">Post</label>
            <textarea class="form-control text-area" id="postcontent" name="content" rows="4" cols="50" required
                placeholder="Start writing your blog ..............."><%=post.content%></textarea>
        </div>
        <button class="btn btn-primary publish-btn" type="submit" name="button">Update</button>
    </form>

如果这回答了您的问题,请将其标记为完成