Javascript 删除操作后Axios出现404错误
我正在运行一个React应用程序,它有一些更新用户数据的方法。这些功能之一是使用Axios从收藏夹电影列表中删除电影。删除: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/
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问题和删除问题吗?如果是这样的话,请别忘了投票并标记为答案?