创建 NestFactory 后如何将 mongoose 插件设置为模式

Posted

技术标签:

【中文标题】创建 NestFactory 后如何将 mongoose 插件设置为模式【英文标题】:How to set mongoose plugin to a schema after creating NestFactory 【发布时间】:2020-01-26 07:02:34 【问题描述】:

我正在使用nest,我需要在设置猫鼬插件之前调用另一个服务来获取密钥,我尝试在main.ts中初始化猫鼬插件,但它不起作用,下面是我的做了

test.schema.ts

  import  Document  from 'mongoose';
            
    export class TestSchema extends Document
           readonly test: String;
    
init.schema.ts

    export const initMongoosePlugin = () => 
    
      TestSchema.plugin(plugin, 
        fields: ['test'],
        secret: global['KEY'], // init it in main.ts
      );
    
    ;
main.ts

async function bootstrap() 
  const app = await NestFactory.create(AppModule);
  const appService: AppService = app.get(AppService);
  global['KEY'] = await appService.getKey();
  // init Mongoose Plugin
  initMongoosePlugin();
  app.use(requestIp.mw());
  await app.listen(3000));

bootstrap();

【问题讨论】:

你在使用来自NestMongooseModule吗? 是的,我正在使用来自 @nestjs/mongoose 的 MongooseModule 然后当 main.ts 运行时,MongooseModule 已经用它的所有模型(forFeature)初始化,你可以使用 app.get 来获取你需要的模型,然后从模型中获取模式在架构上设置插件 看起来很棒!你能用一些示例代码回答这个问题吗? 我会尝试把一些东西放在一起 【参考方案1】:

你得到错误还是没有设置?您是否尝试从注入模式的服务构造函数中调用它? 但是我使用以下内容在 mongodb 中定义模式

import  Schema  from 'mongoose';

export const TestSchema = new Schema(
    
      test: String;
    
);

【讨论】:

以上是关于创建 NestFactory 后如何将 mongoose 插件设置为模式的主要内容,如果未能解决你的问题,请参考以下文章

从 MySQL 到 Mongo 数据导出:如何保存创建日期?

如何将子文档插入 mongo 集合?

如何将子文档插入 mongo 集合?

Mongo副本集搭建

如何在 Python 中为递归对象创建 Mongo 文档模式?

如何在WebStorm中设置mongo