无法在NodeJS中使用Mongoose和Typescript扩展基类。
无法在NodeJS中使用Mongoose和Typescript扩展基类。
我正在尝试在使用Typescript的NodeJS中使用Mongoose 4.5.4和它的类型定义,并利用仓库模式。
RepositoryBase:
export class RepositoryBaseimplements IRead , IWrite { private _model: mongoose.Model ; constructor(schemaModel: mongoose.Model ) { this._model = schemaModel; } create(item: T): mongoose.Promise > { return this._model.create(item); } //...... //为简洁起见,省略了其他CRUD方法 }
UserRepository:
export class UserRepository extends RepositoryBase{ constructor() { super(UserSchema); } }
在调用`UserRepository`的`super()`时,我遇到了以下类型错误:
[ts] Argument of type '(name: string) => IModelConstructor & EventEmitter' is not assignable to parameter of type 'IModelConstructor& EventEmitter'. Type '(name: string) => IModelConstructor & EventEmitter' is not assignable to type 'IModelConstructor '. Property 'findById' is missing in type '(name: string) => IModelConstructor & EventEmitter'. import UserSchema
有人知道为什么吗?我的模型(`UserSchema`)的创建非常简单:
let model = mongooseConnection.model("Users", UserSchema.schema);
非常感谢对正确方向的指导。
在使用Mongoose和Typescript开发NodeJS应用时,出现了无法通过继承基类的问题。问题的解决方法是通过简单的导出语句来解决类型问题。
具体来说,在开发过程中,我们使用了Mongoose来连接MongoDB数据库,并使用Typescript来进行类型检查。在某个地方,我们需要定义一个模型并继承一个基类。然而,当我们尝试继承基类并导出模型时,遇到了一个类型错误的问题。
为了解决这个问题,我们尝试了一种简单的方法。我们使用了mongooseConnection.model
方法来定义模型,并指定了模型的类型IUserModel
。具体代码如下:
export const model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);
这个简单的导出语句足以解决类型问题,使我们能够继承基类并导出模型。通过指定模型的类型,我们可以确保在使用模型时进行类型检查,避免潜在的错误。
总结起来,无法通过继承基类的问题是由于在使用Mongoose和Typescript开发NodeJS应用时遇到的类型错误。解决方法是使用mongooseConnection.model
方法来定义模型,并指定模型的类型。这样可以确保在使用模型时进行类型检查,提高代码的可靠性。