[发明专利]一种根据TypeScript类型生成Mongoose模型的方法有效
申请号: | 202110410820.8 | 申请日: | 2021-04-15 |
公开(公告)号: | CN113031935B | 公开(公告)日: | 2023-10-27 |
发明(设计)人: | 周伟航;马晓迪 | 申请(专利权)人: | 杭州芯翼科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 北京久维律师事务所 11582 | 代理人: | 邢江峰 |
地址: | 311100 浙江省杭州市余杭*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 根据 typescript 类型 生成 mongoose 模型 方法 | ||
本发明公开了一种根据TypeScript类型生成Mongoose模型的方法,涉及生成Mongoose模型技术领域,具体为一种根据TypeScript类型生成Mongoose模型的方法,包括以下步骤:步骤一:开启TypeScript的类型信息输出,有两种方法均可等价;步骤二:给数据库模型类的不同条件,加上不同修饰器;步骤三:若有跨字段索引,则给数据库模型类加上@index()修饰器步骤四:若有第三方插件需要引入,则给数据库模型类加上@plugin()修饰器;步骤五:使用getSchema方法,传入数据库模型类,得到Mongoose的约束模型;步骤六:使用getModel方法,传入数据库模型类,得到有类型约束的Mongoose的数据库模型实例。本发明收集TypeScript的类型信息,自动生成Mongoose所需要的类型模型信息,并且可以使用简化的修饰器,设置类型模型的属性和索引信息。
技术领域
本发明涉及生成Mongoose模型技术领域,具体为一种根据TypeScript类型生成Mongoose模型的方法。
背景技术
TypeScript类型信息可以提供强类型语言的类型推断,可以在代码编译时检查类型约束产生的错误,降低代码书写时产生的错误。Mongoose是一种MongoDB的ODM(ObjectDocumentMapper,对象文档映射器)由于MongoDB本身是不提供类型约束的,即Collection(集合)内可以存储任意类型的Document(文档),Mongoose在此基础上实现了一套类型模型,以提供数据校验和类型约束。但是两者之间的数据尽管在逻辑上是相通的,但是在实际上并不互相兼容。
发明内容
针对现有技术的不足,本发明提供了一种根据TypeScript类型生成Mongoose模型的方法,解决了上述背景技术中提出TypeScript和Mongoose两者之间的数据尽管在逻辑上是相通的,但是在实际上并不互相兼容的问题。
为实现以上目的,本发明通过以下技术方案予以实现:一种根据TypeScript类型生成Mongoose模型的方法,包括以下步骤:
步骤一:开启TypeScript的类型信息输出,有两种方法均可等价;
步骤二:给数据库模型类的不同条件,加上不同修饰器;
步骤三:若有跨字段索引,则给数据库模型类加上@index()修饰器
步骤四:若有第三方插件需要引入,则给数据库模型类加上@plugin()修饰器;
步骤五:使用getSchema方法,传入数据库模型类,得到Mongoose的约束模型;
步骤六:使用getModel方法,传入数据库模型类,得到有类型约束的Mongoose的数据库模型实例;
步骤七:使用上步得到的数据库模型实例进行增删改查操作,可以同时得到类型提示以及数据库类型约束。
可选的,所述步骤一中的两种方法分别为:在编译时传递—emitDecoratorMetadata,以及修改tsconfig.json文件,设置compilerOptions.emitDecoratorMetadata为true。
可选的,所述步骤二中,进一步地,包括以下内容:对数据模型类加上@model()修饰器;给数据库模型类的_id字段,加上@id()修饰器;给数据库模型类的各个属性字段,加上@prop()修饰器。
可选的,所述步骤二中,进一步地,包括以下内容:给数据库模型类的各个数组字段,加上@array()修饰器;给数据库模型类必填字段,加上@required()修饰器;给数据库模型类需要索引的字段,加上@indexed()修饰器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州芯翼科技有限公司,未经杭州芯翼科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110410820.8/2.html,转载请声明来源钻瓜专利网。