Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除操作后Axios出现404错误_Javascript_Reactjs_Axios - Fatal编程技术网

Javascript 删除操作后Axios出现404错误

Javascript 删除操作后Axios出现404错误,javascript,reactjs,axios,Javascript,Reactjs,Axios,我正在运行一个React应用程序,它有一些更新用户数据的方法。这些功能之一是使用Axios从收藏夹电影列表中删除电影。删除: removeFavorite(event, favorite) { event.preventDefault(); console.log(favorite); axios.delete(`https://flix-app-test.herokuapp.com/users/${localStorage.getItem('user')}/favorites/

我正在运行一个React应用程序,它有一些更新用户数据的方法。这些功能之一是使用Axios从收藏夹电影列表中删除电影。删除:

removeFavorite(event, favorite) {
  event.preventDefault();
  console.log(favorite);
    axios.delete(`https://flix-app-test.herokuapp.com/users/${localStorage.getItem('user')}/favorites/${favorite}`, {
      headers: { Authorization: `Bearer ${localStorage.getItem('token')}` }
    })
      .then(response => {
        this.getUser(localStorage.getItem('token'));
      })
      .catch(err => {
        console.log(err);
      });
  }
这是生活在
index.js
文件中的代码:

app.delete('/users/:username/movies/:movieId', passport.authenticate('jwt', { session: false }), function(req, res) {
  Users.findOneAndUpdate({ username : req.params.username }, {
    $pull : { favorites : req.params.movieId }
  },
  { new : true }, // This line makes sure that the updated document is returned
  function(err, updatedUser) {
    if (err) {
      console.error(err);
      res.status(502).send("Error: " + err);
    } else {
      res.json(updatedUser)
    }
  });
});
由于某些原因,我尝试删除电影时收到404错误消息:

错误:“请求失败,状态代码为404”createError createError.js:16结算结算。js:17手工加载xhr.js:59 dispatchXhrRequest xhr.js:34 xhrAdapter xhr.js:11 dispatchRequest js:59承诺回调*请求Axios.js:53方法 js:68 wrap bind.js:9 getUser主视图.jsx:58 componentDidMount main view.jsx:89 React 6不稳定\u运行优先级
scheduler.development.js:818 React 10 parcelRequire删除中的url与express应用中的url不匹配。 您应该将
收藏夹
更改为
电影
,以解决404错误

为了能够删除收藏夹,您应该使用
$in
更新代码

app.delete('/users/:username/movies/:movieId',passport.authenticate('jwt',{session:false}),函数(req,res){
Users.findOneAndUpdate({username:req.params.username}{
$pull:{收藏夹:{$in:req.params.movieId}
},
{新:正确},
函数(err,updateUser){
如果(错误){
控制台错误(err);
res.status(502).send(“错误:+err”);
}否则{
res.json(updateuser)
}
});
});
根据您存储收藏夹的方式,您可能需要按如下方式进行拖动:

      $pull: {
        favorites: {
          _id: { $in: req.params.movieId }
        }
      }

@SuleymanSah已经优雅地为404错误提供了解决方案,但对我来说,核心问题是
axios.delete
没有从列表数组中删除条目


原来,
axios.delete
只能删除应用程序使用
axios.post
创建的条目无法使用axios删除直接在mongoDB阵列上创建的条目。因此,如果您在删除条目时遇到困难,请尝试先创建一个功能来添加条目,然后再删除条目。在我的情况下,只有应用程序创建的条目才能被应用程序删除。

404错误或状态代码仅在您写入错误的URL或endpointsconsole时出现。日志(err.response)将显示有关它的更多信息。“我无法找出错误的来源”-它来自服务器,但您只显示了客户端代码。您可以共享在“删除”中发送的url吗?还按照Evan的建议在catch块中共享console.log(err.response)。@SuleymanSah,我将console.log(err.response)放在@cgobbet上。这个答案解决了404问题和删除问题吗?如果是这样的话,请别忘了投票并标记为答案?