如何获得koa-router查询参数?

时间:2018-04-05 02:19:24

标签: node.js koa2

我已经使用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)

有人能帮我一把吗?

3 个答案:

答案 0 :(得分:2)

基本上,我认为您误解了context.paramsquery 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.queryctx.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