TypeScript 中的 Mongoose post hook 类型错误
Posted
技术标签:
【中文标题】TypeScript 中的 Mongoose post hook 类型错误【英文标题】:Mongoose post hook Type error in TypeScript 【发布时间】:2021-06-28 16:03:17 【问题描述】:当我在要使用的模型上调用 updateOne() 时,我正在使用猫鼬和打字稿
someSchema.post<Query>('updateOne', function(doc: IsomeDoc)
console.log(this)
问题是this
是 Query 类型,如果我抑制打字稿检查器并忽略它,因为它给了我一个错误:
Generic type 'Query<ResultType, DocType, THelpers>' requires between 2 and 3 type arguments.
这是我的架构
const someSchema = new Schema(
_id: type: String, required: true ,
status: type: String ,
,
timestamps: true
)
如何在函数内获得this
的正确类型?经过大量搜索后,几乎没有使用带有 typescript 和 mongoose 的 post hook。
什么是ResultType?
编辑:
在看到@gregooroo 的回答后,我可以通过将其设为Query<IsomeDoc, IsomeDoc>
来通过查询,但它没有为我提供该对象的正确类型。
【问题讨论】:
【参考方案1】:对于查询中间件,您需要使用该查询应返回的通用类型构造一个 Query 类型
someSchema.post<Query<IsomeDoc, IsomeDoc>>('updateOne', function(doc)
console.log(this)
【讨论】:
虽然它不再给我错误,但当我输入this._update
时,编译器说它不存在,但如果我使用 @ts-ignore 它会打印出一个属性
哦,我明白了。所以显然“_update”没有暴露在猫鼬类型中。我在网上找到了这个sn-p:pastebin.com/HUgUq0Ka也许它会帮助你@F22lightning
关于这个或在一般情况下使用带有猫鼬的打字稿的文档为零,谢谢!
确实如此。尤其是现在(mongoose >5.11),他们正在处理自己的 TypeScript 定义,所以有几件事可能会有所不同。以上是关于TypeScript 中的 Mongoose post hook 类型错误的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 中的 Mongoose post hook 类型错误
Mongoose 的 loadClass() 和 TypeScript
Typescript Mongoose 以类型安全的方式忽略查询结果中的某些字段
Mongoose Schema 类型作为 TypeScript 的自定义接口?
如何在nestjs mongoose typescript中引用嵌套文档
使用`let cached = global.mongoose`时出现Next.js + Typescript + mongoose错误