我有一个NestJS应用程序(版本7),它使用mongoose
。安装的包是@nestjs/mongoose
和mongoose
。
我想创建一个ExceptionFilter来捕获mongoose
错误。
@Post('/register')
@HttpCode(201)
@UseFilters(MongoExceptionFilter)
@UsePipes(new ValidationPipe({ whitelist: true }))
async register(){}
MongoExceptionFilter
@Catch(MongoError)
export class MongoExceptionFilter implements ExceptionFilter {
......
}
问题是我不能从mongodb
导入MongoError,因为它不起作用,正如这里提到的。
问题是,我应该从哪里导入这个MongoError
,这样NestJS就可以捕获mongoose抛出的错误。从我所看到的mongoose
和@nestjs/mongoose
都没有暴露这个对象。
更新
https://github.com/GeoPablo/nest-demo-mongo-这里是一个GitHub存储库
1条答案
按热度按时间3npbholx1#
mongoose包导入错误
import { Error } from 'mongoose';
来自官方Mongoose Docs:
嵌套异常过滤中:
现在回答您的问题:
问题是,我应该从哪里导入这个MongoError,这样NestJS就可以捕获mongoose抛出的错误。从我所看到的来看,mongoose和@nestjs/mongoose都没有暴露这个对象。
NestJS只是简单地 Package 了
mongoose
包,这样,它就可以作为一个可导入的模块使用。它既不修改也不使用mongodb。这就是为什么你仍然需要安装mongoose。所以不会有来自@nestjs/mongoose
包的mongo相关错误。至于MongoError
,Mongoose处理MongoError
并以自己的方式巧妙地呈现它(参考 * Mongoose中的错误 * 链接)并抛出它。我不认为有办法从mongoose包中导入本机MongoError
,或者让mongoose抛出本机MongoError
,而不是自己的Error
。如果有办法的话我会更新的。