Tag: hapijs joi

如何使用joivalidation用户名是否唯一?

我读了一篇文章,在这篇文章中,作者使用Joi来asynchronousvalidation用户名是否唯一,通过检查数据库。 现在我找不到它了,我想知道怎样才能和Joi做到这一点。

用Joivalidation嵌套对象

如何使用joivalidation这个对象? 我用Hapi api使用Joi。 { "email":"rambo@gmail.com", "password":"abc123", "active":"", "details": { "firstName": "Rambo", "lastName": "Comando", "phoneNumber": "5554446655", "billing":{ "firstName": "", "lastName": "", "phoneNumber": "", "address": "", "adress2": "", "postalCode": "", "city": "", "state": "", "country": "", "stripeId": "" } } } 我试过这样做,但它不工作。 什么是这样做的正确方法? payload: { email: Joi.string().email().required(), password: Joi.string().alphanum().min(8).max(30).required(), active: Joi.boolean(), details: Joi.object().keys({ firstName: Joi.string().max(50), lastName: Joi.string().max(50), […]

在Nodejs中使用JoivalidationREST参数

我试图通过使用joi包在Hapi节点服务器中validation我的GET请求。 validation工作正常如预期。 但是我很努力地find一个方法来返回错误,如果没有parameter passing。 目前如果没有parameter passing成功。 还有一种方法来修改正在发送的响应? var Hapi = require('hapi'); var Joi = require('joi'); var server = module.exports = new Hapi.Server(); server.connection({ host : process.env.HOST, port : 3000 }); server.route({ method: 'GET', path: '/test', config: { validate: { query: { a: Joi.string().regex(/[0-9a-f]{8}-[0-9a-f]{4}/), b: Joi.string(), c: Joi.string(), d: Joi.string(), e: Joi.string() } } }, handler: […]

JOI:在数组中允许空值

我正在尝试在POST请求中添加数组的validation Joi.array().items(Joi.string()).single().optional() 我需要在有效载荷中允许空值。 你能告诉我如何做到这一点吗?

多个Joivalidationtypes

我search了很多,但没有发现允许在Joi多种typesvalidation 链接: https : //github.com/hapijs/joi 我想用这样的东西: validate: { type: joi.or([ joi.string(), joi.array(), ]) };

我如何使用Joi来清理hapi的查询参数?

我想知道如果我可以使用Joi来自动清理查询参数,而不是手动做到这一点? 这是我为路线所做的。 var querystring = require('querystring'); function dateToString(date) { return moment(new Date(querystring.unescape(date))).toISOString(); } function posts(request, reply) { request.query.from = dateToString(request.query.from); } 这是Joi模式。 var topPostsConfig = { description: 'Top posts', plugins: { 'hapi-swagger': { order: 1 } }, validate: { query: { form: Joi.date().iso().optional().default(moment().subtract(2, 'day').utc().format()).description('start date for query') } } } { method: 'GET', path: '/posts', […]

设置validation的默认值

我使用Joi在我的node.js服务器上使用hapijs框架来validation服务的有效载荷。 它过去看起来像这样(在我的脚本代码以及编译为JavaScript后): payload: { para1: Joi.number().required(), para2: Joi.string() } 现在我想设置两个参数的默认值。 如果代码是用JavaScript编写的,我可以这样做: payload: { para1: Joi.number().required().default(1), para2: Joi.string().default("defaultstring") } 我在swaggertesting它,默认值实际上成为我设置的值。 不过,我的项目是用打字稿写的。 我做了同样的事情和编译打字稿的代码。 结果JavaScript看起来像这样: payload: { para1: Joi.number().required()["default"](1), para2: Joi.string()["default"]("defaultstring") } 在招摇,默认值不适用。 这是我的问题: 编译后为什么代码变得不同? ["default"]("defaultstring")是什么意思,它是做什么的? 我怎样才能写打字稿的代码,以确保它可以编译为Joi.string().default("defaultstring") 更新 根据@ rsp的post,问题2中的格式是访问对象属性的不同方式。 我也从这里得到参考。 但是这并不能解释它们是否有任何区别。 有人有什么主意吗? UPDATE2 这里是访问JS属性的两种方式之间的区别。 使用括号方式似乎没有负面影响。 但是,在我的情况下,默认值并不反映在大摇大摆。 将会对此进行研究。

Hapijs和Joi:用存在validation查询参数:'禁止'

我的目标是为post创build索引路线。 用户应该能够指定一些查询参数(即标签,types),但不应该能够指定其他。 澄清: 这是好的: /posts /posts?tags=food /posts?type=regular&tags=stackoverflow 这不好: /posts?title=Hello 这是hapi包configuration: servers: [ { host: 'localhost', port: 3000, options: { labels: ["api"], validation: { abortEarly: false, presence: 'forbidden' } } } ], 请注意presence: forbidden选项。 这是路由configuration: handler: function (request, reply) { Post.find(request.query, function (err, posts) { if(err) { console.log(err); } reply(posts); }); }, validate: { query: { […]