返回 AiToEarn
mongodb.module.ts
根目录 / project / aitoearn-backend / libs / mongodb / src / mongodb.module.ts
1 import type { MongodbConfig } from './mongodb.config'
2 import { Global } from '@nestjs/common'
3 import { MongooseModule } from '@nestjs/mongoose'
4 import mongoose from 'mongoose'
5 import mongooseLeanVirtuals from 'mongoose-lean-virtuals'
6 import { repositories } from './repositories'
7 import { schemas } from './schemas'
8 import { TransactionalInjector } from './transactional.injector'
9
10 mongoose.plugin(mongooseLeanVirtuals)
11 mongoose.set('transactionAsyncLocalStorage', true)
12
13 @Global()
14 export class MongodbModule {
15 static forRoot(config: MongodbConfig) {
16 const forFeature = MongooseModule.forFeature([...schemas])
17 const { uri, ...options } = config
18
19 return {
20 imports: [
21 MongooseModule.forRoot(uri, options),
22 forFeature,
23 ],
24 providers: [
25 ...repositories,
26 TransactionalInjector,
27 ],
28 exports: [
29 forFeature,
30 ...repositories,
31 ],
32 module: MongodbModule,
33 global: true,
34 }
35 }
36 }
37
37 lines TYPESCRIPT