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); อย่างง่ายๆ ก็เพียงพอที่จะแก้ปัญหาเรื่องการพิมพ์นี้ได้