Mongodb 在nestjs中处理mongo/mongoose错误不是
我想设置一个过滤器来捕获mongo错误(我在这个项目中使用mongoose),但我所做的一切都不起作用,我对互联网上的内容的研究/测试也没有任何作用 mongoExceptionFilter.ts 我在这里测试调用Mongodb 在nestjs中处理mongo/mongoose错误不是,mongodb,mongoose,nestjs,Mongodb,Mongoose,Nestjs,我想设置一个过滤器来捕获mongo错误(我在这个项目中使用mongoose),但我所做的一切都不起作用,我对互联网上的内容的研究/测试也没有任何作用 mongoExceptionFilter.ts 我在这里测试调用main.ts: async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); app.useG
main.ts
:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
app.useGlobalFilters(new MongoExceptionFilter());
await app.listen(3001);
}
@Post()
@UseFilters(MongoExceptionFilter)
createUser(@Body() body: UsersDto): Promise<Users> {
return this.userService.createUser(body.name, body.password);
}
这里是users.controller.ts
:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
app.useGlobalFilters(new MongoExceptionFilter());
await app.listen(3001);
}
@Post()
@UseFilters(MongoExceptionFilter)
createUser(@Body() body: UsersDto): Promise<Users> {
return this.userService.createUser(body.name, body.password);
}
@Post()
@UseFilters(MongoExceptionFilter)
createUser(@Body()Body:UsersDto):承诺{
返回this.userService.createUser(body.name,body.password);
}
我找到了一些仅供参考的链接:
- 这里也有同样的问题。我现在唯一的解决方案是在全局过滤器中捕获从
mongodb
导入的MongoError
,并在那里检查它这里同样的问题。我现在唯一的解决方案是在全局过滤器中捕获从mongodb
导入的MongoError
,并在那里检查它,因为mongodb的MongoError不同于mongoose包的MongoError。因此,您似乎同时使用了两个软件包,即Mongodb和mongoose。因为Mongodb的MongoError与mongoose软件包的MongoError不同。看来您同时使用了两个软件包,即Mongodb和mongoose。对于自定义消息,我结合了answers的解决方案
从'@nestjs/common'导入{ArgumentsHost,Catch,ExceptionFilter,rpceexceptionfilter};
从“猫鼬”导入{Error};
从“../errors/bad request exception.error”导入{IDTOError};
导入ValidationError=Error.ValidationError;
从“mongodb”导入{MongoError};
@捕获(MongoError)
导出类MongoExceptionFilter实现ExceptionFilter{
捕获(异常:MongoError,主机:ArgumentsHost){
//开关(异常代码){
//案例11000:
//默认值:console.log(异常,'ALERT ERROR CATCHED');
////重复异常
////在此处执行任何操作,例如向客户端发送错误
///**上帝*/
// }
const ctx=host.switchToHttp(),
response=ctx.getResponse();
返回response.status(400.json)({
状态代码:400,
createdBy:“ValidationErrorFilter、架构或模型定义”,
错误:异常,
});
}
}
@捕获(验证错误)
导出类ValidationErrorFilter实现rpceExceptionFilter{
捕获(异常:ValidationError,主机:ArgumentsHost):任何{
const ctx=host.switchToHttp(),
response=ctx.getResponse();
返回response.status(400.json)({
状态代码:400,
createdBy:“ValidationErrorFilter、架构或模型定义”,
错误:exception.errors,
});
}
}
通过自定义消息,我结合了来自答案的解决方案
从'@nestjs/common'导入{ArgumentsHost,Catch,ExceptionFilter,rpceexceptionfilter};
从“猫鼬”导入{Error};
从“../errors/bad request exception.error”导入{IDTOError};
导入ValidationError=Error.ValidationError;
从“mongodb”导入{MongoError};
@捕获(MongoError)
导出类MongoExceptionFilter实现ExceptionFilter{
捕获(异常:MongoError,主机:ArgumentsHost){
//开关(异常代码){
//案例11000:
//默认值:console.log(异常,'ALERT ERROR CATCHED');
////重复异常
////在此处执行任何操作,例如向客户端发送错误
///**上帝*/
// }
const ctx=host.switchToHttp(),
response=ctx.getResponse();
返回response.status(400.json)({
状态代码:400,
createdBy:“ValidationErrorFilter、架构或模型定义”,
错误:异常,
});
}
}
@捕获(验证错误)
导出类ValidationErrorFilter实现rpceExceptionFilter{
捕获(异常:ValidationError,主机:ArgumentsHost):任何{
const ctx=host.switchToHttp(),
response=ctx.getResponse();
返回response.status(400.json)({
状态代码:400,
createdBy:“ValidationErrorFilter、架构或模型定义”,
错误:exception.errors,
});
}
}