TypeScript 的 Mongoose loadClass 问题

Yar*_*nST 6 javascript mongoose mongodb node.js typescript

我正在利用 mongoose类模式

并在我的 Node 项目中使用 TypeScript。

我已经按照Typescript 的方式关注了 Mongoose...?确保我的模型知道我定义的模式,所以我有自动完成等功能。

然而,模式类变得更加棘手。正如他们的文档中所写:

loadClass() 函数允许您从 ES6 类中引入方法、静态和虚函数。类方法映射到架构方法,静态方法映射到架构静态,getter/setter 映射到虚拟方法。

所以我的代码看起来像这样:

interface IUser extends mongoose.Document {
  firstName: string,
  lastName: string
};

const userSchema = new mongoose.Schema({
  firstName: {type:String, required: true},
  lastName: {type:String, required: true},
});

class UserClass{
   static allUsersStartingWithLetter(letter: string){
       return this.find({...});
   }
   fullName(this: IUser){
      return `${this.firstName} ${this.lastName}`
   }
}
userSchema.loadClass(UserClass);

const User = mongoose.model<IUser>('User', userSchema);
export default User;
Run Code Online (Sandbox Code Playgroud)

我的目标是 TypeScript 能够理解:

  1. User有一个方法allUsersStartingWithLetter
  2. User实例有一个方法fullName

在当前配置中没有。我自己无法完成它。

Sam*_*NET -1

您的UserClass需求Modelmongoose. 您似乎缺少一些必要的代码来使这项工作适合您。

从您作为参考共享的链接中,这里有一个指南,可以通过完整的代码示例解决您的问题。

/sf/answers/4067517751/