繁体   English   中英

定制装饰器 Typescript Mongoose

[英]Custom Decorator Typescript Mongoose

我正在尝试创建一个自定义 class 装饰器,它创建一个存储库 class 的实例,下面的代码片段代表“装饰器”和“存储库”。

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 {

}

这个其他片段代表我的 mongoose 模型

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)

但是当我尝试使用我的自定义装饰器时,typescript 会抱怨一些东西并给出这个错误。

'User' only refers to a type, but is being used as a value here.ts(2693)

有人已经有这个问题,可以帮助我吗?

装饰器function Repository(service: Document) {}的参数是 document 的一个实例,但您传递了一个类型User

@Repository(User)应该是@Repository(new UserModel)

或者改变参数的类型

function Repository(service: Model<User>) {}然后你可以像这样调用装饰器@Repository(UserModel)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM