fastify和ajv架构验证

时间:2017-12-23 16:45:25

标签: javascript ajv

我正在尝试验证查询字符串参数'hccid',如下所示。似乎验证对我不起作用。有人能看到我错过的东西吗?

const fastify = require('fastify')({
  ajv: {
        removeAdditional: true,
        useDefaults:      true,
        coerceTypes:      true
    }
});


const schema = {
    querystring: {
       hccid: { type: 'string' }
    }
};

// Declare a route
 fastify.get('/hello', {schema}, function (request, reply) {
    const hccid = request.query.hccid;
    reply.send({ hello: 'world' })
});

// Run the server!
fastify.listen(3000, function (err) {
if (err) throw err
  console.log(`server listening on ${fastify.server.address().port}`)
});

因此,使用该代码,当我使用全新的queryparam abc调用服务时,我应该得到架构验证异常,就像我在下面显示的那样

http://localhost:3000/hello?abc=1

但没有错误。我得到了回复{"hello":"world"}

我还尝试一起删除queryparam http://localhost:3000/hello

我还有{"hello":"world"}

很明显,验证无效。我的代码中缺少什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

这种架构结构解决了我的问题。如果有人想要检查它们是否遇到类似的问题,以防万一。

const querySchema = {
    schema: {
       querystring: {
         type: 'object',
           properties: {
             hccid: {
               type: 'string'
             }
         },
       required: ['hccid']
     }
  }
}