我已经使用axios.delete()在前端执行删除,代码如下
Axios({
method: 'DELETE',
url:'http://localhost:3001/delete',
params: {
id:id,
category:category
}
})
我使用koa-router在后端解析我的请求,但我无法得到我的查询参数。
const deleteOneComment = (ctx,next) =>{
let deleteItem = ctx.params;
let id = deleteItem.id;
let category = deleteItem.category;
console.log(ctx.params);
try {
db.collection(category+'mds').deleteOne( { "_id" : ObjectId(id) } );
}
route.delete('/delete',deleteOneComment)
有人能帮我一把吗?
答案 0 :(得分:2)
基本上,我认为您误解了context.params
和query string
。
我假设您使用的是koa-router
。使用koa-router
,{k} params
会添加context
个对象,并提供对named route parameters
的访问权限。例如,如果使用命名参数id
声明路线,则可以通过params
访问它:
router.get('/delete/:id', (ctx, next) => {
console.log(ctx.params);
// => { id: '[the id here]' }
});
要使查询字符串通过HTTP正文,您需要使用ctx.request.query
,ctx.request
是koa请求对象。
您应该注意的另一件事就是,您的代码不应该建议使用http删除请求,这意味着您不应该使用params
来传递它。
答案 1 :(得分:1)
您可以使用ctx.query
,然后使用所需值的名称。
例如,对于给定的网址:
https://hey.com?id=123
您可以使用id
访问属性ctx.query.id
。
router.use("/api/test", async (ctx, next) => {
const id = ctx.query.id
ctx.body = {
id
}
});
答案 2 :(得分:0)
per koa documentation ctx.request.query