猫鼬在打字稿中发布钩子类型错误

时间:2021-04-01 16:21:50

标签: node.js typescript mongoose mongoose-schema

我正在使用猫鼬和打字稿,当我在要使用的模型上调用 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 类型?经过大量搜索,几乎没有使用带有打字稿和猫鼬的 post hook。 什么是结果类型?

编辑:

在看到@gregooroo 的回答后,我能够通过将其设为 Query<IsomeDoc, IsomeDoc> 来绕过 Query,但它没有为我提供此对象的正确类型。

1 个答案:

答案 0 :(得分:1)

对于查询中间件,您需要构造一个 Query 类型,该类型具有此查询应返回的通用类型


someSchema.post<Query<IsomeDoc, IsomeDoc>>('updateOne', function(doc) {
    console.log(this)
}