首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用next-connect删除带有Next.JS/Mongodb的文档?

如何使用next-connect删除带有Next.JS/Mongodb的文档?
EN

Stack Overflow用户
提问于 2021-05-30 07:00:06
回答 2查看 379关注 0票数 1

我正在使用NextJS/Mongodb构建我的第一个CRUD应用程序,我使用next-connect作为方法,我对这一切都是超级新手。

我能够成功地创建帖子,并更新用户配置文件,但我完全卡住了删除帖子。我试图模仿我创建帖子的方式,但将其改为.deleteOne而不是.insertOne。我还可以显示post._id,这样我就可以访问它了。我只是对如何将它传递给我的delete函数感到困惑。

我知道我应该传入post._id,然后将其发送到handler.delete,它位于NextJS的api/文件夹中,然后在handler.delete中调用我的delete函数。我已经介绍了使用next-connect执行CRUD操作的多个示例,但几乎没有一个示例演示delete操作。也许我只是找错地方了。我将下面的代码附加到我目前所在的位置以供参考

任何帮助都将不胜感激。谢谢!

代码语言:javascript
复制
// components/post/posts.jsx

function Post({ post }) {

  const postDelete = (id) => {
    const body = {
      _id: id,
    };
    fetch("/api/posts", {
      method: "DELETE",
      body: JSON.stringify(body),
    });
  };

  return (
    <div>
        {post._id}
        <button onClick={() => postDelete(post._id)}>Delete</button>
    </div>
);
代码语言:javascript
复制
// api/posts/index.js

handler.delete(async (req, res) => {
  console.log("reached handler delete function");
  const deleteResult = await deletePost(req.db, {
    _id: req.post._id,
  });
  return res.json({ deleteResult });
});
代码语言:javascript
复制
// db/posts.js

export async function deletePost(db, { _id }) {
  return db.collection("posts").deleteOne({
    _id,
  });
}
EN

回答 2

Stack Overflow用户

发布于 2021-05-30 07:23:18

替换

代码语言:javascript
复制
// api/posts/index.js

handler.delete(async (req, res) => {
  console.log("reached handler delete function");
  const deleteResult = await deletePost(req.db, {
    _id: req.post._id,
  });
  return res.json({ deleteResult });
});

通过

代码语言:javascript
复制
// api/posts/index.js

handler.delete(async (req, res) => {
  console.log("reached handler delete function");
  const deleteResult = await deletePost(req.db, req.body._id);
  return res.json({ deleteResult });
});
票数 0
EN

Stack Overflow用户

发布于 2021-06-01 23:18:14

应答

问题出在我的变量名上。

代码语言:javascript
复制
// components/post/posts.jsx

const postDelete = async (event) => {
    if (userInfo) {
      const body = {
        postId: post._id,
      };
      const res = await fetch("/api/posts/patch", {
        method: "DELETE",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(body),
      });
      if (res.status === 200) {
        toast.success("Post Deleted!");
      }
    } else {
      toast.error("Please sign-in!");
    }
  };
代码语言:javascript
复制
// api/posts/index.js

handler.delete(async (req, res) => {
  console.log(req.body);
  const del = await deletePost(req.db, {
    postId: req.body.postId,
  });
  return res.status(200).send("Uploaded");
});
代码语言:javascript
复制
// db/posts.js

export async function deletePost(db, { postId }) {
  return db
    .collection("posts")
    .deleteOne({
      "_id": postId,
    })
    .then(({ value }) => value);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67756360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档