如何确保属性的某些格式

时间:2017-06-18 10:41:52

标签: validation express typescript joi

我想知道是否可以描述一种接口属性应具有的格式。例如:

File exists

我读到了decorators,但它似乎只适用于类,而不是接口。

我正在使用node / express构建API并希望进行输入验证。所以我正在考虑Celebrate,可以joi type Schema来验证输入。但我想使用TypeScript来定义我的Schema / view模型......如您所见,我尝试使用Interface来定义给定端点的输入应该如何:

  • 年龄:数字,可选
  • name:string
  • birthdate:字符串格式为“YYYY-MM-DD”

任何提示和帮助非常感谢:)

1 个答案:

答案 0 :(得分:0)

  

任何提示和帮助非常感谢:)

首先:您必须编写验证代码。它不会神奇地发生。

两种方法:

带外验证

您使用validate(obj) => {errors?}。您创建一个验证函数,它接受并反对并告诉您任何错误(如果有的话)。你可以很容易地自己编写这样的函数。

带内验证

而不是{birthdate:string}您有{birthdate:FieldState<string>}之类的内容,其中FieldState维护特定字段的验证和错误。这是https://formstate.github.io/#/采用的方法,但您可以轻松地创建类似的东西。

关于验证器的说明

我认为验证器简单(value) => error?(可选错误的值),因为它们可以与框架无关并且可以使用/重用于死亡。这也是formstate使用的验证器。当然这只是我的观点,你可以尝试一下适合你的需求