如何检查Koa的ctx.query的内容?

时间:2019-08-05 13:46:58

标签: node.js koa

对于基于Koa的API服务器,我想检查URL查询包含哪些参数。

我的设置看起来像这样简单:

const Koa = require('koa')
const app = new Koa()

const Router = require('koa-router')
router = new Router()

router.get('/', ctx => {
    console.log(ctx.query)
})

app.use(router.routes())
app.use(router.allowedMethods())

app.listen(3000)

ctx.query似乎具有类似于对象的结构,但不能作为一个对象使用。

诸如ctx.query.hasOwnProperty()ctx.query.toString()之类的方法会导致错误,指出它不是函数。

尽管,Object.keys(ctx.query)给出了一个键数组,这使我感到困惑,因为它显然是一个对象,并且应该具有上述方法。

ctx.query到底是什么?如何使上述失败的方法起作用?

1 个答案:

答案 0 :(得分:1)

ctx.query是Node.js的querystring.parse()方法的返回值。从文档中:

  

querystring.parse()方法返回的对象不   原型继承自JavaScript对象。这意味着   典型的Object方法,例如obj.toString(),obj.hasOwnProperty(),   其他未定义,将无法正常工作。

您可以检查Koa的request implementation