使用@nestjs/mongoose 时如何在文档界面中定义静态猫鼬方法?
Posted
技术标签:
【中文标题】使用@nestjs/mongoose 时如何在文档界面中定义静态猫鼬方法?【英文标题】:How to define static mongoose methods in document interface while using @nestjs/mongoose? 【发布时间】:2019-02-09 14:31:12 【问题描述】:Mongoose 架构类 Mongoose 集合用户架构
const UserSchema = new Schema(
firstName:
type: String,
required: true,
,
lastName:
type: String,
required: true,
,
gender:
type: String,
enum: Object.keys(GenderType),
required: true,
,
);
UserSchema.methods =
fullName(): string
return `$this.firstName $this.lastName`;
,
;
UserSchema.statics =
someAction(): string
return '123';
,
;
export default UserSchema;
文档接口类
Mongoose 集合接口类
export interface IUser extends Document
_id: Types.ObjectId;
firstName: string;
lastName: string;
gender: string;
fullName: () => string;
使用@nestjs/mongoose时如何在文档界面中定义静态mongoose方法?
【问题讨论】:
【参考方案1】:除了IUser
,您可能还希望有一个额外的接口IUserModel
并从Model<T>
扩展它。示例 sn-p 可能如下所示:
export interface IUserModel extends Model<IUser>
// Model is imported from mongoose
// you can put your statics methods here
someAction: () => string;
然后在使用@InjectModel()
注入模型的任何地方,您都可以键入IUserModel
类型的注入。
constructor(@InjectModel('UserModel') private readonly userModel: IUserModel)
现在您的this.userModel
将可以访问someAction()
方法。
编码愉快!
【讨论】:
以上是关于使用@nestjs/mongoose 时如何在文档界面中定义静态猫鼬方法?的主要内容,如果未能解决你的问题,请参考以下文章
在 @nestjs/mongoose 中设置 mongoose 全局选项
nestjs mongoose .insertMany 不是函数