我正在使用MongoDB Atlas和Next.js构建一个Web应用程序

该应用程序应该有充分的CRUD到帖子,到目前为止,创建和更新帖子工作良好.

但我无法让应用程序删除正确的帖子.

以下是我删除的路由:

export const DELETE = async (request, { params }) => {
  console.log("params from single post api (delete)", params);
  try {
    await connectToDB();
    await Post.findOneAndDelete(params.id);
    return new Response("Post deleted successfully", { status: 200 });
  } catch (error) {
    return new Response("Failed to delete the post", { status: 500 });
  }
};

控制台已经记录了我要删除的帖子的ID

单机自检接口参数(删除){id:‘64b10e1f0535aa38a6f4eac9’}

但当我在点击删除BTN后查看数据库时,帖子仍然在那里.

相反,另一篇帖子被删除了.我想知道为什么...

我用了findOneAndDelete()findOneAndRemove(),没发现有什么区别.

以下是完整的代码: https://github.com/gongtzuuuu/meloverse/blob/main/app/api/post/%5Bid%5D/route.js

任何建议都将不胜感激!

推荐答案

FindOneAndDelete方法需要一个Query对象作为其参数,而不仅仅是帖子的ID.在您的代码中,您将参数id直接传递给findOneAndDelete.

    const query = { _id: ObjectId(params.id) }
         //or
    const query = { _id: params.id } // if you are sure that id is a string.
    await Post.findOneAndDelete(query)

Reactjs相关问答推荐

在react中向数组状态添加值时出错

如何将图像(在代码中称为自己)定位在蓝色圈内的点上?我正在使用material UI和Reaction

下拉Tailwind CSS菜单与怪异beviour

如何访问子集合中的文档?

Redux Store未触发React组件中的重新呈现

一键MUI导出

Next.js Next-Auth登录函数重定向到http://localhost:3000/api/auth/error

如何隐藏移动导航栏后面的向下滚动图标和文本?

从ReactDataGridtry 将数据传递给父组件

如何更新redux状态存在的输入框

计数器递增 2 而不是 1

useEffect 渲染没有依赖数组的组件

我刚刚部署了我的 Vite React 站点,但我的图标/图像没有部署

在 Formik 表单中访问子组件的值

如何根据react 中的 map 功能一次只打开一个弹出窗口?

网格项不缩小以适应包含的可滚动列表

ReactJS:按钮启用禁用更改 colored颜色

Rtk 查询无效标签不使数据无效

为什么我从另一个组件收到错误?

根据计算 ReactJs 更新输入字段