我需要验证此对象:

{a: 'valueA', b: 'valueB'}

要验证‘a’,我需要判断它的值(ValueA)是否存在于我的数据库中.如果该值不存在,则该对象无效,否则有效.我如何使用Joi验证器创建一个定制的异步/等待来实现这一点?

推荐答案

您可以使用any.external()方法添加外部验证,它接收一个函数作为参数,因此可以用来判断数据库中的值.

收到的函数的第一个参数是您设置要验证的对象的克隆.它在所有其他验证之后运行.如果架构验证失败,则不调用任何外部验证规则.

const checkData = async (data) => {
  const res = await db.find({ name: data.a }) // or any method you use
  if (!res) {
    throw new Error('Data not found in db!')
  }
}

const schema = Joi.string().external(checkData)
await schema.validateAsync({ a: 'valueA', b: 'valueB' })

More information

Javascript相关问答推荐

yarn安装一个本地npm包,以便本地包使用main项目的node_modules(ckeditor-duplicated-modules错误)

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

格式值未保存在redux持久切片中

防止用户在selectizeInput中取消 Select 选项

拖放仅通过 Select 上传

使用useEffect,axios和useParams进行react测试

当用户点击保存按钮时,如何实现任务的更改?

从另一个数组中的对应行/键值对更新数组中的键值对对象

为什么我的按钮没有从&q;1更改为&q;X&q;?

无法避免UV:flat的插值:非法使用保留字"

如何更改Html元素S的 colored颜色 ,然后将其褪色为原始 colored颜色

用于测试其方法和构造函数的导出/导入类

如何在独立的Angular 应用程序中添加Lucide-Angel?

使用可配置项目创建网格

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

如何从图表中映射一组图表-js使用REACT

使用JavaScript或PHP从div ID值创建锚标记和链接

如何在通过JavaScript添加图像后将其删除?

JSdiscord机器人为什么不工作前缀?如何决定与discord机器人的问题?

Svelte:数组内的值绑定不起作用