Typescript NestJS Mongoose:无法访问ChangeEvent上的完整文档<;任何>;
我有以下基本的代码片段,我的目标是从Typescript NestJS Mongoose:无法访问ChangeEvent上的完整文档<;任何>;,typescript,mongoose,model,nestjs,watch,Typescript,Mongoose,Model,Nestjs,Watch,我有以下基本的代码片段,我的目标是从obj:ChangeEvent获取fullDocument属性,但是我无法访问此属性(属性“fullDocument”在类型“ChangeEvent”上不存在)。我可以访问的唯一属性是_id、clusterTime和operationType。我是否缺少一些东西,或者我应该直接非直接地查询完整文档(obj['fullDocument']) 您遇到的问题(TypeScript抱怨缺少属性)是由于mongoose的模型中的非专用的返回类型generic.watch
obj:ChangeEvent
获取fullDocument属性,但是我无法访问此属性(属性“fullDocument”在类型“ChangeEvent”上不存在
)。我可以访问的唯一属性是_id、clusterTime和operationType。我是否缺少一些东西,或者我应该直接非直接地查询完整文档(obj['fullDocument']
)
您遇到的问题(TypeScript抱怨缺少属性)是由于mongoose的模型中的非专用的返回类型generic.watch
方法(在正式类型和正式类型中,我假设您使用的都是mongoose 5.x分支)
例如@types/mongodb
包正确声明/专门化方法上的返回类型
真正的解决方案是创建一个Pull请求,修复上述包存储库中watch
返回类型的返回类型,和/或向维护人员报告问题。对于快速“修复”,您可以采用如下类型转换(对于最干净的changeStream
形状,MySchema
应该是您用@Schema
注释的类):
const changeStream=this.model
.watch([],{fullDocument:'updateLookup'})作为ChangeStream;//{
控制台日志(obj.fullDocument);
});
还要注意,这需要副本集或分片群集
const changeStream = this.model.watch([], { fullDocument: 'updateLookup' })
.on('change', obj => {
console.log(obj.fullDocument);
});