无法在 NodeJS 中使用 Mongoose 和 Typescript 扩展基类
Posted
技术标签:
【中文标题】无法在 NodeJS 中使用 Mongoose 和 Typescript 扩展基类【英文标题】:Cannot extend base class with Mongoose and Typescript in NodeJS 【发布时间】:2016-11-19 21:52:02 【问题描述】:我正在尝试在 NodeJS 中使用 Mongoose 4.5.4 和 it's typings 和 Typescript(显然)同时使用存储库模式。
存储库库:
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);
我在从UserRepository
调用super()
时遇到以下类型错误
[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);
我将非常感谢朝着正确的方向前进。
【问题讨论】:
在此处查看 2 个解决方案:***.com/questions/34482136/…(免责声明:其中一个是我的) 【参考方案1】:做一个简单的export const model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);
就足以解决这个打字问题。
【讨论】:
以上是关于无法在 NodeJS 中使用 Mongoose 和 Typescript 扩展基类的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 mongoose 和 NodeJs 在 Mongodb 的数组字段中插入数据
无法得到我在 nodejs / mongoose / bluebird 中返回的承诺
我无法使用 Mongoose 在 MongoDB 中保存或查找文档
nodejs+express+mongoose无法获取数据库数据问题解决