我错过了啥?使用 axios 执行删除请求,使用 mongodb 作为 bakcend 使用 req.params.id 进行故障排除
Posted
技术标签:
【中文标题】我错过了啥?使用 axios 执行删除请求,使用 mongodb 作为 bakcend 使用 req.params.id 进行故障排除【英文标题】:what am i missing ? using axios to perform a delete request , troubleshooting with req.params.id using mongodb as bakcend我错过了什么?使用 axios 执行删除请求,使用 mongodb 作为 bakcend 使用 req.params.id 进行故障排除 【发布时间】:2020-02-14 00:01:37 【问题描述】:我正在尝试执行一个从本地 mongodb 数据库中删除帖子的函数。 我已经用邮递员测试了它正在工作的代码,但是在前端我使用的是 axios 并且需要将 id 作为请求参数传递, 但我收到一个错误。我的代码无法传递 id 参数,但后端代码看起来没问题。
xhr.js:166 DELETE http://localhost:3000/api/posts/?id=5da802aa8b54d7220f84110e 404(未找到)
axios.delete('/api/posts/',params:id:'xyz')
虽然我通过直接插入 id 在邮递员中进行了测试 (http://localhost:5000/api/posts/xyz_id) 与删除请求,它工作。
/////后端
delete(req, res, next)
const postId = req.params.id;
Post.findOneAndDelete( _id:postId )
.then(post => res.status(204).send(post))
.catch(next);
//////前端
const deletePost =()=>
axios
.delete('/api/posts/', params: id:'5da802aa8b54d7220f84110e')
.then(res => console.log('deleted'))
.catch('err', err => console.log(err));
;
【问题讨论】:
可以贴一下邮递员生成的脚本吗? 【参考方案1】:验证您不必在标题中提供一些授权:
const deletePost =()=>
axios
.delete('/api/posts/:id', params: id:'5da802aa8b54d7220f84110e')
.then(res => console.log('deleted'))
.catch('err', err => console.log(err));
;
【讨论】:
【参考方案2】:axios 请求的第二个参数通常用于传入一个req.body
。在您的后端 逻辑中,您尝试使用req.params
中可用的数据,这些数据应通过前端 上的路由路径传递。试试这个:
const deletePost = () =>
axios
.delete(`/api/posts/$5da802aa8b54d7220f84110e`) //you can swap the number with an actual variable
.then(res => console.log('deleted'))
.catch('err', err => console.log(err));
;
这假设您的 API 路由类似于 app.delete("/api/posts/:id")
【讨论】:
以上是关于我错过了啥?使用 axios 执行删除请求,使用 mongodb 作为 bakcend 使用 req.params.id 进行故障排除的主要内容,如果未能解决你的问题,请参考以下文章
执行 Task.Cancel 方法时引发异常。我错过了啥吗? [复制]
使用 AJAX 的 jQuery AutoComplete - 我错过了啥?