Nest js mongoose 日志连接事件
Nest js mongoose log connection event
我在 express 中做了类似的事情来记录 mongodb 连接事件。
mongoose
.connect(process.env.DATABASE, {
useNewUrlParser: true,
useFindAndModify: false
})
.then(() => console.log('connect to DB successfully :)'));
mongoose.connection.on('error', err => {
console.log('DB connection failed');
});
mongoose.connection.on('disconnected', () => {
console.log('DB disconnected');
});
mongoose.connection.on('reconnected', () => {
console.log('DB reconnected');
});
我想要 Nest js 中的类似功能,但我做不到。
这是我连接到 mongodb.
的嵌套 js 代码
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
controllers: [AppController],
providers: [AppService],
imports: [
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
uri: configService.get<string>('dbConnectionString'),
user: configService.get<string>('DB_USER'),
pass: configService.get<string>('DB_PASS')
}),
inject: [ConfigService]
})
]
})
export class AppModule {}
终于找到答案了。我应该使用 InjectConnection
.
@Injectable()
export class AppService {
constructor(@InjectConnection() private connection: Connection) {
this.connection.on('disconnected', () => {
console.log('DB disconnected');
});
}
}
您可以在 app.module.ts
文件中监控 NestJS mongodb 连接,同时通过 url 连接 mongodb。
MongooseModule.forRoot(dbURL, {
connectionFactory: (connection) => {
connection.on('connected', () => {
console.log('is connected');
});
connection.on('disconnected', () => {
console.log('DB disconnected');
});
connection.on('error', (error) => {
console.log('DB connection failed! for error: ', error);
});
return connection;
},
},
),
我在 express 中做了类似的事情来记录 mongodb 连接事件。
mongoose
.connect(process.env.DATABASE, {
useNewUrlParser: true,
useFindAndModify: false
})
.then(() => console.log('connect to DB successfully :)'));
mongoose.connection.on('error', err => {
console.log('DB connection failed');
});
mongoose.connection.on('disconnected', () => {
console.log('DB disconnected');
});
mongoose.connection.on('reconnected', () => {
console.log('DB reconnected');
});
我想要 Nest js 中的类似功能,但我做不到。 这是我连接到 mongodb.
的嵌套 js 代码import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
controllers: [AppController],
providers: [AppService],
imports: [
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
uri: configService.get<string>('dbConnectionString'),
user: configService.get<string>('DB_USER'),
pass: configService.get<string>('DB_PASS')
}),
inject: [ConfigService]
})
]
})
export class AppModule {}
终于找到答案了。我应该使用 InjectConnection
.
@Injectable()
export class AppService {
constructor(@InjectConnection() private connection: Connection) {
this.connection.on('disconnected', () => {
console.log('DB disconnected');
});
}
}
您可以在 app.module.ts
文件中监控 NestJS mongodb 连接,同时通过 url 连接 mongodb。
MongooseModule.forRoot(dbURL, {
connectionFactory: (connection) => {
connection.on('connected', () => {
console.log('is connected');
});
connection.on('disconnected', () => {
console.log('DB disconnected');
});
connection.on('error', (error) => {
console.log('DB connection failed! for error: ', error);
});
return connection;
},
},
),