我刚刚开始在一个新项目中使用Nest JS,我对所有的锅炉板代码感到非常沮丧,特别是当涉及到DTO类,Mongoose模式和接口时。到目前为止,我一直这样做的方式是,我有一个接口,它描述了我的集合文档中需要的字段,然后我有DTO类用于验证,它实现了这些接口,然后还有Mongoose的Schemas,它必须简单地镜像接口(因为它们不能直接实现它们afaik)。这意味着如果我改变了文档结构中的一件事,我必须在三个不同的地方更新它。此外,还有双重验证:在模式和DTO类上。
难道我不能完全放弃DTO类,只使用接口和模式,并在将文档插入数据库时简单地进行验证吗?如果这不是一个好主意,有没有其他的替代方案,不需要我在三个不同的地方更改代码?使用DTO create类而不是接口怎么样?
EDIT:似乎简单地使用create DTO而不是接口就可以了。我将停止使用接口,继续前进。
1条答案
按热度按时间u4dcyp6a1#
在NestJS中,可以为实体使用一个DTO类来实现Mongoose模式定义和验证。NestJS提供了一个名为:@nestjs/mongoose(如果您还没有使用它),它允许您使用Typescript类和装饰器定义Mongoose模式。用于定义Mongoose模式的相同DTO类也可以用于使用@nestjs/class-validator和管道来定义验证规则,方法是使用来自class-validator的验证装饰器来装饰类属性。下面的类充当Mongoose模式,同时处理验证:
要了解更多关于它的信息,请阅读以下关于NestJS官方文档的页面:
我希望你发现这个答案有帮助。