Axios Delete 在 React App 中不工作,但在 PostMan/Insomnia 中工作

问题描述

当我通过邮递员发送请求时,Axios DELETE 可以工作,但在我的 React 应用程序中却没有。我正在传递 MongoDB 分配条目的 _id。我正在启动 ObjectId 但它仍然不起作用。我还仔细检查了我是否使用了正确的路线。

在我的应用程序中,我有调用 SaveBook 的点击函数。那部分我感觉还可以。如果我需要分享其他内容,请告诉我。

前端AuthActions.js中的SaveBook

    - alert: "Dependency Status - {{ $labels.serviceName }} unhealthy "
      expr: 100*avg_over_time(dependency_status{}[30m]) < 90
      for: 1m
      labels:
        severity: warning
        action: page
        pager: pagerDutyService
      annotations:
        summary: "Dependency Unhealthy - Service: {{ $labels.serviceName }}"
        information: "Dependency Status availability rate over 30m for service "{{ $labels.serviceName }} at {{ $value }}%"

users.js 中服务端的删除操作

export const saveBook = ({books,user,book,_id}) => {
    return function () {
        
        console.log(`This is id ${JSON.stringify(_id)}`)


          const savedindex = books.indexOf(book);
         

        if (savedindex >= 0) {
            console.log(savedindex)
            axios
            .delete("/api/users/wishlist",{_id})
        } else {
            console.log(savedindex)
            // console.log(`Adding ${book.book.title} to faves...`);
            axios
            .post("/api/users/dashboard",{book,user})
            .then(console.log("success"))
            .catch (err =>
                json(err)
            );
        }
    }
   };

解决方法

我意识到 req.body 不是 Delete 方法的正确选择,并使用 url params/req.params 发送 _id。这很好用。

在 authActions.js 中修复了这一行

axios
    .delete("/api/users/wishlist/" + _id,) 

在 Users.js 中修复了这几行

 router.delete('/wishlist/:id',(req,res) => {
    const db = mongoUtil.getDb();
    
    db.db("mern-auth-2").collection("savedbooks")
    
    // .deleteOne({_id:ObjectId(req.body._id)})
    .deleteOne({_id:ObjectId(req.params.id)})