【问题标题】:How do I delete a database entry using Axios?如何使用 Axios 删除数据库条目?
【发布时间】:2020-06-27 01:50:37
【问题描述】:

我正在尝试使用 Axios 从我的数据库中删除评论并收到 404 错误。创建、读取和更新都正常工作。我假设这可能是因为我在删除请求中的 url 与数据库中列出的 id 不匹配?

App.js 路由器:

          <Router>
            <Route exact path="/" component={Reviews}/>
            <Route path="/edit/:id" component={Edit}/>
            <Route path="/create" component={Create}/>
            <Route path="/delete/:id" component={Delete}/>
            <Route path="/about" component={About}/>
            <Route path="/contact" component={Contact}/>
          </Router>
      </Container>
      </>
    )
  }
}

删除组件:

export default class Delete extends Component {

constructor(props) {
    super(props);
    this.onSubmit = this.onSubmit.bind(this);
    
    this.state = {
        title: '',
        releaseDate: 0,
        rating: 0,
        artist: '',
        review: ''
    }
}

  onSubmit(e) {
     e.preventDefault();
     console.log(this.props.match.params.id)
     axios.delete('http://localhost:4000/reviews/delete/'+this.props.match.params.id)
         .then(res => console.log(res.data));
     this.props.history.push('/')
 }

render() {
    return (
    <>
        <Jumbotron className='text-center'>
            <h2>Delete</h2>
        </Jumbotron>
        <div>   
            <h3>Delete "{this.state.title}" ?</h3>
            <form onSubmit={this.onSubmit}>
                <div className="form-group">
                    <input type="submit" value="Delete Review" className="btn btn-primary" />
                </div>
            </form>
        </div>
    </>
    )
}
}

服务器:

reviewRoutes.route('/delete/:id').post(function(req,res) {
    Review.findByIdAndRemove(req.params.id, (err, review) => {
        if (err) return res.status(500).send(err);
        const response = {
            message: "Review successfully deleted",
            id: review._id
        };
        return res.status(200).send(response);
    });
});

错误:

【问题讨论】:

  • 看起来您的服务器路由设置为发布请求而不是删除请求。 reviewRoutes.route('/delete/:id').delete

标签: reactjs axios http-status-code-404 mern


【解决方案1】:
reviewRoutes.route('/delete/:id').delete(function(req,res) {
    Review.findByIdAndRemove(req.params.id, (err, review) => {
        if (err) return res.status(500).send(err);
        const response = {
            message: "Review successfully deleted",
            id: review._id
        };
        return res.status(200).send(response);
    });
});

您发出的是发布请求而不是删除请求。

【讨论】:

  • 谢谢!我怎么想念这个。现在工作正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多