我正在使用NextJS/Mongodb构建我的第一个CRUD应用程序,我使用next-connect作为方法,我对这一切都是超级新手。
我能够成功地创建帖子,并更新用户配置文件,但我完全卡住了删除帖子。我试图模仿我创建帖子的方式,但将其改为.deleteOne而不是.insertOne。我还可以显示post._id,这样我就可以访问它了。我只是对如何将它传递给我的delete函数感到困惑。
我知道我应该传入post._id,然后将其发送到handler.delete,它位于NextJS的api/文件夹中,然后在handler.delete中调用我的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,
});
}发布于 2021-05-30 07:23:18
替换
// 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 });
});通过
// 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 });
});发布于 2021-06-01 23:18:14
应答
问题出在我的变量名上。
// 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!");
}
};// 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");
});// db/posts.js
export async function deletePost(db, { postId }) {
return db
.collection("posts")
.deleteOne({
"_id": postId,
})
.then(({ value }) => value);
}https://stackoverflow.com/questions/67756360
复制相似问题