TypeScript 的 Mongoose loadClass 问题
Posted
技术标签:
【中文标题】TypeScript 的 Mongoose loadClass 问题【英文标题】:Mongoose loadClass issue with TypeScript 【发布时间】: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()。如果你这样做,它正在工作。 (我有同样的问题) 【参考方案1】:您的UserClass
需要从mongoose
扩展Model
。您似乎缺少一些必需的代码来为您工作。
从您作为参考共享的链接中,这里有一个指南,应该可以通过完整的代码示例解决您的问题。
https://***.com/a/58107396/1919397
【讨论】:
不,不需要从文档扩展。请参阅文档:mongoosejs.com/docs/4.x/docs/advanced_schemas.html 它应该可以在不从 Document 扩展的情况下工作。以上是关于TypeScript 的 Mongoose loadClass 问题的主要内容,如果未能解决你的问题,请参考以下文章
typescript 使用TypeScript和MongoDb的Mongoose示例
typescript 使用TypeScript和MongoDb的Mongoose示例
Mongoose 的 loadClass() 和 TypeScript
graphql + mongoose + typescript,如何减少重复的模型定义