我有以下规则:Joi.string().empty("").default(null)。
我假设这个规则会转换一个空字符串""为 null,但情况似乎并非如此。
我如何获得所需的行为?
如果规则应用于非必填字段,则略有不同。
使用empty(""):如果请求提供了""值,它将被替换为undefined。
使用default(null):意味着如果该值是,undefined它将被替换为null- 请注意,如果请求中根本没有提供值,它也会被替换undefined。
因此,您的示例将接受任何字符串,但如果值为 ,""它将被替换为undefined,然后如果值为 ,undefined它将被替换为null。
因此,该值将始终适用null于每个""请求,除非提供了其他字符串。
undefined如果您希望在请求未提供值时保留该值,则需要类似以下内容:
Joi.alternatives()
.try(
Joi.string().valid('').empty('').default(null), // accept only empty strings and convert those to null
Joi.string() // accept every other string
)
Run Code Online (Sandbox Code Playgroud)
这样,如果请求值是字符串,它将被接受,除非它是字符串,""否则它将被转换为null. 否则,如果请求未为该字段提供任何值,则该值将保留undefined。
| 归档时间: |
|
| 查看次数: |
6416 次 |
| 最近记录: |