我正在尝试在使用存储库模式的NodeJS中使用Mongoose 4.5.4和it's typings(显然)。
RepositoryBase:
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
}
UserRepository:
export class UserRepository extends RepositoryBase<IUserModel> {
constructor() {
super(UserSchema);
}
}
我从super()
UserRepository
时出现以下类型错误
[ts]
Argument of type '<U>(name: string) => IModelConstructor<U> & EventEmitter' is not assignable to parameter of type 'IModelConstructor<Document> & EventEmitter'.
Type '<U>(name: string) => IModelConstructor<U> & EventEmitter' is not assignable to type 'IModelConstructor<Document>'.
Property 'findById' is missing in type '<U>(name: string) => IModelConstructor<U> & EventEmitter'.
import UserSchema
有谁知道为什么?我创建模型(UserSchema
)非常简单:
let model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);
我非常感谢推动正确的方向。
答案 0 :(得分:1)
做一个简单的export const model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);
足以解决这个打字问题。