Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Typescript NestJS Mongoose:无法访问ChangeEvent上的完整文档<;任何>;_Typescript_Mongoose_Model_Nestjs_Watch - Fatal编程技术网

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);
      });