gpt4 book ai didi

mongoose - 用于 MongoError 的 NestJS 异常过滤器返回 UnhandledPromiseRejectionWarning

转载 作者:行者123 更新时间:2023-12-05 00:56:45 25 4
gpt4 key购买 nike

我正在尝试通过 Mongoose 为 Mongo 错误创建自定义异常过滤器。当我使用过滤器时,会发生 UnhandledPromiseRejectionWarning 并且它没有给出任何结果。知道如何解决这个问题吗?

错误: UnhandledPromiseRejectionWarning: TypeError: 'instanceof' 的右侧不是对象

users.controller.ts

import { Body, Controller, Post, UseFilters } from '@nestjs/common';
import { UsersService } from './users.service';
import { RegisterUserDto } from './dto/register-user.dto';
import { MongooseExceptionFilter } from './filters/mongoose-exception.filter';

@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}

@UseFilters(MongooseExceptionFilter)
@Post('register')
register(@Body() registerDto: RegisterUserDto) {
return this.usersService.create(registerDto);
}
}

mongoose-exception.filter.ts

import { ExceptionFilter, Catch, ArgumentsHost } from '@nestjs/common';
import { Request, Response } from 'express';
import { MongoError } from 'mongoose';

@Catch(MongoError)
export class MongooseExceptionFilter implements ExceptionFilter {
catch(exception: MongoError, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const request = ctx.getRequest<Request>();
// const status = exception.getStatus();
console.log('Exception', exception);

response
.status(418)
.json({
statusCode: 418,
timestamp: new Date().toISOString(),
path: request.url,
});
}
}

最佳答案

问题是“MongoError”在 mongoose 包中不直接可用,并且 mongodb 包中的 MongoError 与 mongoose 使用的不同。解决方法很简单,在mongoose-exception.filter.ts文件中,我把import改成:

import { MongoError } from 'mongoose/node_modules/mongodb';

关于mongoose - 用于 MongoError 的 NestJS 异常过滤器返回 UnhandledPromiseRejectionWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61676293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com