NestJS - 带有 GridFS 的猫鼬

NestJS - Mongoose with GridFS

我想 mongoose 与 NestJs 一起使用。我正在使用 @nestjs/mongoose 包,如 documentation 中所述。 当我将它与标准模型一起使用时,它可以正常工作。但我需要使用 GridFS 将文件存储在我的 mongo 数据库中。

如何使用此功能? @nestjs/mongoose 是否可以集成以使用第三方库,例如 mongoose-gridfs 或其他库? 或者应该在我的 NestJs 应用程序中直接使用 mongoose 而没有 @nestjs/mongoose

对于那些想要将 mongoose 与其他需要连接的包一起使用的人,您不应该使用 @nestjs/module。 这是使用标准猫鼬库的示例:https://github.com/nestjs/nest/tree/master/sample/14-mongoose-base

我使用了 nestjs/mongoose 包中的 @InjectConnection() 装饰器来实现此功能:

export class AttachmentsService {
  private readonly attachmentGridFsRepository: any; // This is used to access the binary data in the files
  private readonly attachmentRepository: Model<AttachmentDocument>; // This is used to access file metadata

  constructor(@InjectConnection() private readonly mongooseConnection: Mongoose,
              @Inject(Modules.Logger) private readonly logger: Logger) {
    this.attachmentGridFsRepository = gridfs({
      collection: 'attachments',
      model: Schemas.Attachment,
      mongooseConnection: this.mongooseConnection,
    });

    this.attachmentRepository = this.attachmentGridFsRepository.model;
  }

我的连接是在 app.tsx 中使用 Mongoose.forRootAsync() 实例化的。