自定义装饰器 Typescript Mongoose
Posted
技术标签:
【中文标题】自定义装饰器 Typescript Mongoose【英文标题】:Custom Decorator Typescript Mongoose 【发布时间】:2020-09-04 22:50:44 【问题描述】:我正在尝试创建一个自定义类装饰器,它创建一个存储库类的实例,下面的 sn-p 代表“装饰器”和“存储库”。
import UserModel, User from "../models/user.model";
import AbstractRepository from "./abstract.repository";
import Document, Model from 'mongoose'
import injectable from "inversify";
export function Repository(service: Document): ClassDecorator
return function (target: Function)
@Repository(User)
export class TestRepository
这个另一个 sn-p 代表我的猫鼬模型
import moongose, Document, Schema from 'mongoose'
export interface User extends Document
name: String,
const UserSchema = new Schema<User>(
name:
type: String
,
)
export default moongose.model<User>("user", UserSchema)
但是当我尝试使用我的自定义装饰器时,打字稿会抱怨一些东西并给出这个错误。
'User' only refers to a type, but is being used as a value here.ts(2693)
有人已经遇到过这个问题,可以帮助我吗?
【问题讨论】:
我遇到了同样的问题,我没有找到解决办法。 【参考方案1】:装饰器的参数
function Repository(service: Document)
是文档的一个实例
但是你传递了一个类型User
。
@Repository(User)
应该是@Repository(new UserModel)
。
或者改变参数的类型
function Repository(service: Model<User>)
然后你可以像这样调用装饰器@Repository(UserModel)
【讨论】:
以上是关于自定义装饰器 Typescript Mongoose的主要内容,如果未能解决你的问题,请参考以下文章