【问题标题】:Mongoose post hook Type error in TypeScriptTypeScript 中的 Mongoose post hook 类型错误
【发布时间】:2021-06-28 16:03:17
【问题描述】:

当我在要使用的模型上调用 updateOne() 时,我正在使用猫鼬和打字稿

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

问题是this 是 Query 类型,如果我抑制打字稿检查器并忽略它,因为它给了我一个错误:

Generic type 'Query&lt;ResultType, DocType, THelpers&gt;' 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&lt;IsomeDoc, IsomeDoc&gt; 来通过查询,但它没有为我提供该对象的正确类型。

【问题讨论】:

    标签: node.js typescript mongoose mongoose-schema


    【解决方案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 定义,所以有几件事可能会有所不同。
    猜你喜欢
    • 2018-12-27
    • 2021-06-22
    • 2021-09-22
    • 2018-11-16
    • 1970-01-01
    • 2018-02-19
    • 2016-04-30
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多