草庐IT

javascript - Joi: "tel"不允许为空

即使tel设置为可选,Joi仍返回以下错误。我们如何解决这个问题?谢谢。Error:JoiFailed:ValidationError:child"tel"failsbecause["tel"isnotallowedtobeempty]//DefineJoischemaconstschema={email:Joi.string().required().email({errorLevel:64,minDomainAtoms:2}).min(6),tel:Joi.string().optional().min(10).max(10),password:Joi.string().requi

javascript - joi_1.default.validate 不是函数

我想在调用Controller逻辑之前验证我的Express路由。我使用joi并创建了一个验证器,它能够根据模式对象验证请求对象import{Request,Response,NextFunction}from'express';importjoi,{SchemaLike,ValidationError,ValidationResult}from'@hapi/joi';import{injectable}from'inversify';@injectable()exportabstractclassRequestValidator{protectedvalidateRequest=(v

javascript - 乔伊 :allow null values in array

我正在尝试在POST请求中添加对数组的验证Joi.array().items(Joi.string()).single().optional()我需要在负载中允许空值。你能告诉我如何做到这一点吗? 最佳答案 如果你想让数组为空,使用:Joi.array().items(Joi.string()).allow(null);如果你想在数组中允许空字符串或空白字符串使用:Joi.array().items(Joi.string().allow(null).allow(''));示例:constJoi=require('joi');vars

javascript - Joi 验证模式 - 两个字段不能具有相同的值

假设我有以下架构:varschema={fieldOne:Joi.string().required(),fieldTwo:Joi.string().required()};是否可以设置验证规则来检查两个字段是否具有不同的值? 最佳答案 是的。您可以通过使用Joi.ref来做到这一点和Joi.invalid(别名为Joi.disallow)。对于您的特定示例,它将是:varassert=require('assert');varJoi=require('joi');varschema=Joi.object().keys({field

javascript - Hapijs 和 Joi : validate query params with presence: 'forbidden'

我的目标是为帖子创建一个索引路径。用户应该能够指定一些查询参数(即标签、类型),但不能指定其他参数。澄清一下:没关系:/posts/posts?tags=food/posts?type=regular&tags=stackoverflow这不行:/posts?title=Hello这是hapi包配置:servers:[{host:'localhost',port:3000,options:{labels:["api"],validation:{abortEarly:false,presence:'forbidden'}}}],请注意presence:forbidden选项。这是路由配置

javascript - 使用 Joi 验证请求时如何避免 Hapi.js 发送 400 错误

Hapi.jsValidationwithJoi+failAction问题。情况我们想构建一个“传统”服务器端-仅使用Hapi呈现应用程序。我正在尝试理解如何避免返回“raw”400Joi验证失败时给客户端的错误:我们要拦截这个“emailnotallowedtobeempty”validationerror,并在html模板中显示给客户端,而不是简单地返回400错误。@AdriVanHoudt建议我们应该:"LookatfailActionunderhttp://hapijs.com/api#route-options"因此我们将failAction:'log'添加到/registe

javascript - 允许 Joi 中的可选参数而不指定它们

我对使用Joi在hapi中验证请求负载还很陌生。我的问题如下。我有这条定义的路线:{method:'POST',path:'/foo/bar',config:{description:'foo.bar',handler:handlers.foo,auth:false,tags:['api'],validate:{payload:{email:Joi.string().required(),password:Joi.string().required(),}}}}电子邮件和密码是我需要的属性。但是,我想允许其他属性而不必全部指定它们。例如:{email:foo@bar.com,passw

javascript - 使用嵌套对象的 Hapi/Joi 验证

我在其中一条路线上进行了以下验证:payload:{keywordGroups:Joi.array().items(Joi.object().keys({language:Joi.string().required(),containsAny:Joi.array().items(Joi.string()).default([]).when('containsAll',{is:[],then:Joi.required()}),containsAll:Joi.array().items(Joi.string()).default([]).when('containsAny',{is:[],

javascript - 将 Joi 与 Hapi 一起使用时,如何设置需要一个键但允许任何和所有其他键?

我正在尝试为进入Hapi处理程序的JSON对象编写Joi验证。到目前为止,代码如下所示:server.route({method:'POST',path:'/converge',handler:function(request,reply){consociator.consociate(request.payload).then(function(result){reply(200,result);});},config:{validate:{payload:{value:Joi.object().required().keys({knownid:Joi.object()})}}}})

javascript - 如何允许 Joi 中的任何其他键

这个问题在这里已经有了答案:Joiobjectvalidation:Howtovalidatevalueswithunknownkeynames?(1个回答)关闭4年前。我有一个简单的要求。我试图在互联网上搜索以及文档但失败了。所以这就是我想要实现的目标:我有一个模式:constschema=Joi.object().keys({a:Joi.string().required(),b:Joi.string().required()});现在,我如何配置它以允许对象中的任何其他键?使用此模式,它只允许两个键a和b。如果我传递任何其他键,比如c,它会抛出一个错误,指出c是不允许的。