node.js - 按 id 从 mongoDB 中删除
问题描述
我想使用id
我传递给它的项目从我的数据库中删除一个项目,而不是通过object ID
. 我该怎么做呢?
我已经阅读了一些内容,deleteOne
但我不太确定如何使用它。
每部电影都有一个删除电影的按钮,所以我需要将id
每部电影的 传递给删除函数。这里是 MERN 堆栈的新手。
{
"_id": "5fa55741aae528142e96c9e6",
"id": 531219,
"user": "5fa406cf937ce199eeb176a1",
"title": "Roald Dahl's The Witches",
"overview": "large string ... ",
"poster_path": "/betExZlgK0l7CZ9CsCBVcwO1OjL.jpg",
"vote_average": "7.1",
"__v": 0
},
到目前为止我的代码
router.delete('/:id/delete', auth, async (req, res)=>{
const movie = await Movie.findByIdAndRemove(req.body.id)
if(!movie){
res.send('Movie not found')
} else{
movie.remove()
res.send('movie deleted')
}
})
case REMOVE_MOVIE:
return{...state, wishlist:state.wishlist.filter(movie => movie.id !== payload)}
export const removeMovie = (id) => async dispatch => {
try {
await axios.delete(`/wishlist/${id}/delete`)
dispatch({
type: REMOVE_MOVIE,
payload:id
})
} catch (error) {
console.log('unable to delete movie')
console.error(error)
}
}
解决方案
我可以使用上面的建议来解决这个问题,但是我需要捕获被点击的电影的值并将其分配给传递给 findOneAndDelete 的 id 值。我通过传入 req.params.id 来做到这一点。所以它是 findOneAndDelete({id: req.params.id})。现在一切都按预期工作。谢谢!
推荐阅读
- sharepoint - 计算两个日期之间的差异以计算小时和分钟
- haskell - 为什么这个应用实例是非法的?
- nativescript - Nativescript:在哪里存储导航?
- java - n 位二进制置换表示的时间复杂度
- c++ - 这是未初始化的变量使用未定义的行为吗
- html - 关闭代码后html链接仍然装箱
- python - 什么是可导航字符串 (HTML)?
- angular - ChartJs 不能在没有错误的角度 4 中工作
- java - spring webclient 和 httpsurlconnection 请求 https 接口的一些区别
- php - Facebook SDK 返回错误:Stream 在 facebook SDK5 php CodeIgniter 3 中返回空响应