问题标签 [joi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
12553 浏览

validation - 有没有办法合并 Joi 模式?

有没有办法将两个 joi 模式合并为一个模式?

模式 1

模式 1

合并架构:

如果没有嵌套对象,它很容易完成Object.assign,但即使是深度对象合并也无法与嵌套对象一起使用,因为嵌套对象是一个函数调用。

0 投票
1 回答
627 浏览

reactjs - 动态添加无效参数到 Joi 验证

我有一个表单,它使用 Joi 在 SPA 的前端和后端进行验证,使用 React/redux、react-validation-mixin 和 joi-validation-strategy 进行前端验证。Schema 在构造函数中连接到 this.validatorTypes

根据其他用户对数据库的输入,我可能想拒绝字段的输入(用户名已被占用)

将错误传递给前端后,我希望输入字段无效(因为它仍然具有被拒绝的值)。我想将该值作为无效添加到验证方案中。

有没有办法做到这一点?

0 投票
4 回答
17198 浏览

javascript - 设置验证的默认值

我正在使用 Joi 使用 hapijs 框架在我的 node.js 服务器中验证服务的有效负载。它曾经看起来像这样(在我的打字稿代码以及编译为 javascript 之后):

现在我想设置这两个参数的默认值。如果代码是用 javascript 编写的,我可以这样做:

我大摇大摆地测试了它,默认值实际上变成了我设置的值。

但是,我的项目是用打字稿编写的。我做了同样的事情并编译​​了打字稿代码。结果 javascript 如下所示:

在 swagger 中,不应用默认值。

以下是我的问题:

  1. 为什么编译后代码变得不同?
  2. 是什么["default"]("defaultstring")意思,它有什么作用?
  3. 我如何编写打字稿代码以确保它可以编译为Joi.string().default("defaultstring")

更新

根据@rsp 的帖子,问题2 中的格式只是访问对象属性的不同方式。我也从这里得到参考。但它并没有解释它们是否有任何区别。有人有什么主意吗?

更新2

是访问 JS 属性的两种方式之间的区别。使用括号的方式似乎没有负面影响。但是,就我而言,默认值不会反映在 swagger 上。将对其进行研究。

0 投票
1 回答
9158 浏览

javascript - 有没有办法验证 Joi 模式中的动态键名?

有没有一种方法可以验证这样的值,Joi以便我可以验证它是具有零个或多个键(任何名称)的对象,并且每个对象都有字符串、数字或布尔值的值?

0 投票
2 回答
5473 浏览

javascript - 是否可以从一组定义的字段中要求至少一个字段?

给定这样的定义:

有没有办法要求至少其中一个字段?我不在乎哪一个。

注意:为这个SO 问题提供的解决方案对我没有帮助,因为我有 7 个字段并且它们可能会增长,所以做所有可能的组合是不行的。

在Joi API 参考中找不到任何可能对此用例有用的方法。

任何帮助是极大的赞赏。

0 投票
2 回答
12838 浏览

hapijs - Joi 验证集默认为空对象

我在 Joi 验证中遇到了一个问题(或者我认为是一个问题)。如果它作为请求正文的一部分传递,我正在尝试为不存在的键分配一个值。

例如:

所以具体来说,如果我要通过:

我会得到这个作为回报

用 :eyes: 在空的物体上。Joi.default() 方法缺少什么?我是否过度扩展了 Joi 的用途?

0 投票
1 回答
721 浏览

javascript - Joi Promises with ES 返回错误

}

我确定 err 为空 :D 我做错了什么?我正在尝试使用这个和蓝鸟,但没有任何效果:/

0 投票
2 回答
6093 浏览

javascript - joi:不返回自定义错误,abortEarly 设置为 false

我无法让这个 joi 验证返回所有错误,就像它对默认错误所做的那样。

所以在这里我为每个字段设置单独的自定义错误:

然后当 abortEarly 设置为 false 进行验证时,它只返回它将遇到的第一个错误。

返回的错误是这样的,

当它应该以某种方式返回所有错误时。

我是否错误地使用了 abortEarly 或者是否需要执行一个过程来返回所有自定义错误?提前感谢您的任何回复。

0 投票
1 回答
1619 浏览

joi - Joi 数组验证,根据另一个字段值强制至少一个项目

我有以下验证块

当私有标志为 false 时,我想要求至少 1 项权限根据上一个问题(使用 includes() 而不是 items() ),我应该使用类似的东西:

但这不起作用无论如何验证它?感谢您的反馈

0 投票
1 回答
1915 浏览

node.js - 如何验证 Express Nodejs 字符串中的 body 参数是否可以使用 express-validation 和 joi 转换为 JSON

我正在创建一个接受发布请求的函数。发布请求还包含一个转换为字符串的 JSON 对象。在后端,我需要验证此字符串是否确实可以解析为 JSON,然后才能继续。有路由功能:

这是验证对象: