首页 > 解决方案 > 按 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)
  }
}

标签: node.jsreactjsmongodbredux

解决方案


我可以使用上面的建议来解决这个问题,但是我需要捕获被点击的电影的值并将其分配给传递给 findOneAndDelete 的 id 值。我通过传入 req.params.id 来做到这一点。所以它是 findOneAndDelete({id: req.params.id})。现在一切都按预期工作。谢谢!


推荐阅读