Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在nestjs中处理mongo/mongoose错误不是_Mongodb_Mongoose_Nestjs - Fatal编程技术网

Mongodb 在nestjs中处理mongo/mongoose错误不是

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

我想设置一个过滤器来捕获mongo错误(我在这个项目中使用mongoose),但我所做的一切都不起作用,我对互联网上的内容的研究/测试也没有任何作用

mongoExceptionFilter.ts 我在这里测试调用
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,
      });
      }
      }