ค้นหาเว็บไซต์

node.js - ไม่สามารถขยายคลาสพื้นฐานด้วย Mongoose และ Typescript ใน NodeJS


ฉันกำลังพยายามใช้ Mongoose 4.5.4 และ typings ของมันใน NodeJS กับ Typescript (ชัดเจนอยู่แล้ว) ในขณะที่ใช้รูปแบบ Repository Pattern

ฐานเก็บข้อมูล:

export class RepositoryBase<T extends mongoose.Document> implements IRead<T>, IWrite<T> {
    private _model: mongoose.Model<mongoose.Document>;

    constructor(schemaModel: mongoose.Model<mongoose.Document>) {
        this._model = schemaModel;
    }

    create(item: T): mongoose.Promise<mongoose.model<T>> {
        return this._model.create(item);
    }

    //......
    //Additional CRUD methods excluded for brevity
}

คลังข้อมูลผู้ใช้ :

export class UserRepository extends RepositoryBase<IUserModel> {
    constructor() {
        super(UserSchema);
    }
}

ฉันมีข้อผิดพลาดประเภทดังต่อไปนี้ในการเรียก super() จาก UserRepository

[ts] อาร์กิวเมนต์ของชนิด '<U>(name: string) => IModelConstructor<U> & EventEmitter' ไม่สามารถกำหนดให้กับพารามิเตอร์ของชนิด 'IModelConstructor<Document> & EventEmitter' ได้ ชนิด '<U>(name: string) => IModelConstructor<U> & EventEmitter' ไม่สามารถกำหนดให้กับชนิด 'IModelConstructor<Document>' ได้ คุณสมบัติ 'findById' ขาดหายในชนิด '<U>(name: string) => IModelConstructor<U> & EventEmitter' import UserSchema

มีใครรู้ไหมว่าทำไม? การสร้างโมเดลของฉัน (UserSchema) นั้นง่ายมาก: let model=mongooseConnection.model<IUserModel>("Users", UserSchema.schema);

ผม/ฉันจะขอบคุณมากถ้าได้รับการชี้ทางไปในทิศทางที่ถูกต้อง

คำตอบ #1

การทำ export const model=mongooseConnection.model<IUserModel>("Users", UserSchema.schema); อย่างง่ายๆ ก็เพียงพอที่จะแก้ปัญหาเรื่องการพิมพ์นี้ได้