簡體   English   中英

Joi 異步自定義驗證

[英]Joi async custom validation

我需要驗證這個 object:

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

要驗證“a”,我需要檢查他的值(valueA)是否存在於我的數據庫中。 如果該值不存在,則 object 無效,否則有效。 如何使用 Joi 驗證器創建自定義 async/await 來實現此目的?

您可以使用any.external()方法添加外部驗證,它接收 function 作為參數,因此可用於檢查數據庫的值。

接收到的函數的第一個參數是您設置要驗證的 object 的克隆。 它在所有其他驗證之后運行。 如果架構驗證失敗,則不會調用任何外部驗證規則。

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' })

更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM