在 @nestjs/mongoose 中设置 mongoose 全局选项

Posted

技术标签:

【中文标题】在 @nestjs/mongoose 中设置 mongoose 全局选项【英文标题】:Set mongoose global options in @nestjs/mongoose 【发布时间】:2021-01-01 09:10:49 【问题描述】:

Mongoose 文档说我们可以设置全局选项,例如 mongoose.set('returnOriginal', false)

现在我在nestjs 中使用@nestjs/mongoose,但我找不到描述如何进行此全局选项设置的文档。

我确实找到了通过InjectConnection更改设置的方法

import  Module  from '@nestjs/common';
import  MongooseModule, InjectConnection  from '@nestjs/mongoose';
import  Connection  from 'mongoose';
...
@Module(
  imports: [
    MongooseModule.forRootAsync(
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => (
        uri: configService.get('DB_URI'),
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useFindAndModify: false,
      ),
    ),
    ...
  ],
)
export class AppModule 
  constructor(@InjectConnection() private readonly connection: Connection) 
    connection.base.set('returnOriginal', false);
  

这段代码对我来说很好用。但是在@types/mongoose 中,Connection 类型中没有属性base.set。我必须省略注入 connection 的类型定义。

我的问题是这是否是设置猫鼬全局选项的标准方法?如果没有,我该怎么做?

【问题讨论】:

是的,在 NestJs 结束时定义了一些文档问题。 【参考方案1】:

由于安装了包mongoose,我可以直接设置选项。

...
import * as mongoose from 'mongoose';
...
mongoose.set('returnOriginal', false);

@Model(...)
export class AppModule ...

【讨论】:

以上是关于在 @nestjs/mongoose 中设置 mongoose 全局选项的主要内容,如果未能解决你的问题,请参考以下文章

使用猫鼬崩溃在 NestJS 中实例化新文档

@nestjs/mongoose 的文档

Nestjs - Mongoose - 虚拟字段 - 无法在 graphql 操场上查询

NestJS - 如何自我引用 mongoDB 架构 @nestjs/mongoose?

NestJS + Mongoose + GraphQL:“填充”不起作用

使用@nestjs/mongoose 时如何在文档界面中定义静态猫鼬方法?