无法在NodeJS

时间:2016-07-17 01:55:30

标签: node.js mongodb typescript mongoose

我正在尝试在使用存储库模式的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);

我非常感谢推动正确的方向。

1 个答案:

答案 0 :(得分:1)

做一个简单的export const model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);足以解决这个打字问题。