gpt4 book ai didi

javascript - TypeScript 的 Mongoose loadClass 问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:53 26 4
gpt4 key购买 nike

我正在利用 Mongoose class schemas .

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

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

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

The loadClass() function lets you pull in methods, statics, and virtuals from an ES6 class. A class method maps to a schema method, a static method maps to a schema static, and getters/setters map to virtuals.

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

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;

我的目标是 TypeScript 能够理解:

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

在当前配置中没有。我自己没能完成这个任务。

最佳答案

您是否考虑过将 extends mongoose.Model 添加到 UserClass 中?

class UserClass extends mongoose.Model<IUser> {
static allUsersStartingWithLetter(letter: string){
return this.find({...});
}
fullName(this: IUser){
return `${this.firstName} ${this.lastName}`
}
}

关于javascript - TypeScript 的 Mongoose loadClass 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57220703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com