MongoDB
在这一章节中,我们选择 Typegoose 作为基础的 MongoDB ORM 库。就如同他描述的那样 " Define Mongoose models using TypeScript classes",和 TypeScript 结合的很不错。
简单的来说,Typegoose 使用 TypeScript 编写 Mongoose 模型的 “包装器”,它的大部分能力还是由 mongoose 库来提供的。
也可以直接选择 mongoose 库来使用,我们会分别描述。
相关信息:
描述 | |
---|---|
可用于标准项目 | ✅ |
可用于 Serverless | ✅ |
可用于一体化 | ✅ |
包含独立主框架 | ❌ |
包含独立日志 | ❌ |
提示
- 1、当前模块从 v3.4.0 开始已经重构,历史写法兼容,如果查询历史文档,请参考 这里。
- 2、如果代码中有读取配置,注意
mongoose.clients
可能会读不到,请使用mongoose.dataSource
。
和老写法的区别
如果想使用新版本的用法,请参考下面的流程,将老代码进行修改,新老代码请勿混用。
升级方法:
- 1、无需再使用
EntityModel
装饰器 - 3、在
src/config.default
的mongoose
部分配置调整,参考下面的数据源配置部分- 3.1 修改为数据源的形式
mongoose.dataSource
- 3.2 将实体模型在数据源的
entities
字段中声明
- 3.1 修改为数据源的形式
Mongoose 版本依赖
mongoose 和你服务器使用的 MongoDB Server 的版本也有着一定的关系,如下,请务必注意。
- MongoDB Server 2.4.x: mongoose ^3.8 or 4.x
- MongoDB Server 2.6.x: mongoose ^3.8.8 or 4.x
- MongoDB Server 3.0.x: mongoose ^3.8.22, 4.x, or 5.x
- MongoDB Server 3.2.x: mongoose ^4.3.0 or 5.x
- MongoDB Server 3.4.x: mongoose ^4.7.3 or 5.x
- MongoDB Server 3.6.x: mongoose 5.x
- MongoDB Server 4.0.x: mongoose ^5.2.0
- MongoDB Server 4.2.x: mongoose ^5.7.0
- MongoDB Server 4.4.x: mongoose ^5.10.0
- MongoDB Server 5.x: mongoose ^6.0.0
mongoose 相关的依赖比较复杂,且对应不同的版本,现阶段,我们使用的主要是 mongoose v5 和 v6。
信息
从 mongoose@v5.11.0 开始,mongoose 官方支持了定义,所以不再需要安装 @types/mongoose 依赖包。
安装包依赖版本如下:
支持 MongoDB Server 6.x
"dependencies": {
"mongoose": "^7.0.0",
"@typegoose/typegoose": "^10.0.0", // 使用 typegoose 需要安装此依赖
},
支持 MongoDB Server 5.x
"dependencies": {
"mongoose": "^6.0.7",
"@typegoose/typegoose": "^9.0.0", // 使用 typegoose 需要安装此依赖
},
支持 MongoDB Server 4.4.x
以下版本不需要安装额外定义包。
"dependencies": {
"mongoose": "^5.13.3",
"@typegoose/typegoose": "^8.0.0", // 使用 typegoose 需要安装此依赖
},
以下版本需要安装额外定义包(不推荐)。
"dependencies": {
"mongodb": "3.6.3", // mongoose 内部写死了该版本
"mongoose": "~5.10.18",
"@typegoose/typegoose": "^7.0.0", // 使用 typegoose 需要安装此依赖
},
"devDependencies": {
"@types/mongodb": "3.6.3", // 只能使用此版本
"@types/mongoose": "~5.10.3",
}
其余的 MongoDB 安装模块类似,未测。