【发布时间】:2019-12-04 20:06:33
【问题描述】:
我正在利用猫鼬class schemas。
并在我的 Node 项目中使用 TypeScript。
我已经关注 Mongoose the Typescript way...? 以确保我的模型知道我定义的架构,所以我已经自动完成等。
但是,使用模式类变得更加棘手。 正如他们的文档中所写:
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;
我的目标是 TypeScript 能够理解:
-
User有一个方法allUsersStartingWithLetter -
User实例有一个方法fullName
在当前配置中它没有。 我自己无法完成。
【问题讨论】:
-
您能告诉我您是如何创建新模型的吗?你不能使用 model.create(你的道具),你必须使用 new User().save()。如果你这样做,它正在工作。 (我有同样的问题)
标签: javascript node.js mongodb typescript mongoose