NestJS-Mongoose:无法在 ChangeEvent<any> 上访问 fullDocument
NestJS-Mongoose: cannot access fullDocument on ChangeEvent<any>
我有以下基本代码片段,我的目标是从 obj: ChangeEvent
获取完整文档 属性 但是我无法访问此 属性 (Property 'fullDocument' does not exist on type 'ChangeEvent<any>'
).我可以访问的唯一属性是 _id、clusterTime 和 operationType。有没有我遗漏的东西,或者我应该非直接查询 fullDocument (obj['fullDocument']
)?
const changeStream = this.model.watch([], { fullDocument: 'updateLookup' })
.on('change', obj => {
console.log(obj.fullDocument);
});
您遇到的问题(TypeScript 抱怨缺少 属性)是由于 unspecialized return type generic mongodb.ChangeStream
in mongoose's Model.watch
method (in both @types/mongoose
and official mongoose
types ,我假设您使用的是 mongoose 5.x 分支)。
例如 @types/mongodb
正确包装 declares/specializes watch
方法上的 return 类型。
真正的解决方案是创建一个 Pull Request,修复上述包存储库中 watch
return 类型的 return 类型,and/or 报告问题给维护者。为了快速 'fix' 你可以像这样求助于类型转换(对于最干净的 changeStream
形状,MySchema
应该是你用 @Schema
注释的 class ):
const changeStream = this.model
.watch([], { fullDocument: 'updateLookup' }) as ChangeStream<MySchema>; // <-- specialize using the cast
changeStream.on('change', obj => {
console.log(obj.fullDocument);
});
另请注意,MongoDB Change Stream 需要副本集或分片集群。
我有以下基本代码片段,我的目标是从 obj: ChangeEvent
获取完整文档 属性 但是我无法访问此 属性 (Property 'fullDocument' does not exist on type 'ChangeEvent<any>'
).我可以访问的唯一属性是 _id、clusterTime 和 operationType。有没有我遗漏的东西,或者我应该非直接查询 fullDocument (obj['fullDocument']
)?
const changeStream = this.model.watch([], { fullDocument: 'updateLookup' })
.on('change', obj => {
console.log(obj.fullDocument);
});
您遇到的问题(TypeScript 抱怨缺少 属性)是由于 unspecialized return type generic mongodb.ChangeStream
in mongoose's Model.watch
method (in both @types/mongoose
and official mongoose
types ,我假设您使用的是 mongoose 5.x 分支)。
例如 @types/mongodb
正确包装 declares/specializes watch
方法上的 return 类型。
真正的解决方案是创建一个 Pull Request,修复上述包存储库中 watch
return 类型的 return 类型,and/or 报告问题给维护者。为了快速 'fix' 你可以像这样求助于类型转换(对于最干净的 changeStream
形状,MySchema
应该是你用 @Schema
注释的 class ):
const changeStream = this.model
.watch([], { fullDocument: 'updateLookup' }) as ChangeStream<MySchema>; // <-- specialize using the cast
changeStream.on('change', obj => {
console.log(obj.fullDocument);
});
另请注意,MongoDB Change Stream 需要副本集或分片集群。