【问题标题】:Custom Decorator Typescript Mongoose自定义装饰器 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)

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

【问题讨论】:

  • 我遇到了同样的问题,我没有找到解决办法。

标签: typescript mongoose mongoose-schema


【解决方案1】:

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

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

或者改变参数的类型

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

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 2018-07-20
    • 2013-02-06
    • 2021-04-22
    • 2017-05-01
    • 1970-01-01
    • 2015-10-23
    • 2021-05-11
    • 2017-08-11
    相关资源
    最近更新 更多