【发布时间】:2021-08-17 17:37:24
【问题描述】:
我正在使用 NextJS/Mongodb 构建我的第一个 CRUD 应用程序,并且我正在使用 next-connect 作为方法,我对这一切都非常陌生。
我能够成功创建帖子并更新用户个人资料,但我完全无法删除帖子。我试图模仿我创建帖子的方式,但将其切换为.deleteOne 而不是.insertOne。我也可以显示post._id,所以我知道我可以访问它。我只是对如何将它传递给我的删除函数感到困惑。
我知道我应该传入post._id,然后将其发送到位于NextJS 的api/ 文件夹中的handler.delete,然后在handler.delete 中调用我的删除函数。我已经经历了多个使用 next-connect 进行 CRUD 操作的示例,但几乎没有一个示例演示了 delete 操作。或者,也许我只是在寻找错误的地方。我附上了下面的代码,以供参考我目前的位置。
任何帮助将不胜感激。谢谢!
// 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>
);
// 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 });
});
// db/posts.js
export async function deletePost(db, { _id }) {
return db.collection("posts").deleteOne({
_id,
});
}
【问题讨论】:
标签: javascript node.js mongodb next.js