3
我正在爲具有社交個人資料的某些字段的對象定義Joi模式。目標是確保所有字段都存在,並且至少其中一個字段是非空字符串,但允許其他字符串爲null
。要求joi對象中至少有一個允許null的非null子女
這是我到目前爲止有:
{
facebook : null,
twitter : null,
youtube : null
}
const socialUrl = joi.string().min(1).alphanum().allow(null);
const schema = joi.object({
facebook : socialUrl.required(),
twitter : socialUrl.required(),
youtube : socialUrl.required()
}).required()
之處在於下列對象被認爲是有效的這個偉大的工程這些字段存在,它們只是錯誤的類型。
事後做一個額外的循環,檢查所有字段的具體情況是null
,但這並不理想。
這是用於payload validation,在這裏很高興知道客戶端了解完整的模式,因此希望所有的字段都存在。也許這不值得。我確實知道我可以使用一些詳細的when()代碼來完成工作,但似乎在這一點上,我可能只是做出自己的循環。希望被證明是錯誤的!
嗨,謝謝你的幫助。不幸的是,這並沒有驗證所有字段都存在。因此,像{{facebook:'foo'}}這樣的對象成功驗證,我想要輸入的地方是{Facebook:'foo',twitter:null,youtube:null}'。 –
@SethHolladay 你能給我至少一三個有效和無效的例子嗎? – IlnurIbat
當然!我做了一個回購測試@IlnurIbat請參閱https://github.com/sholladay/repro-so-45123536 –