[英]Typescript and Mongoose Model
我正在嘗試使用Typescript將我的模型與mongoose模式綁定。 我有我的IUser界面:
export interface IUser{
_id: string;
_email: string;
}
我的用戶類:
export class User implements IUser{
_id: string;
_email: string;
}
我的RepositoryBase:
export class RepositoryBase<T extends mongoose.Document> {
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);
}
}
最后我的UserRepository擴展了RepositoryBase並實現了一個IUserRepository(實際上是空的):
export class UserRepository extends RepositoryBase<IUser> implements IUserRepository{
constructor(){
super(mongoose.model<IUser>("User",
new mongoose.Schema({
_id: String,
_email: String,
}))
)
}
}
問題是打字稿編譯器一直說:
如果我這樣做:
export interface IUser extends mongoose.Document
該問題已得到解決,但編譯器說:
真的,我不希望我的IUser擴展mongoose.Document,因為IUser或User都不應該知道Repository如何工作以及它的實現。
我通過參考這篇博客文章解決了這個問題。
訣竅是從像mongoose
擴展Document
接口,如下所示:
import { Model, Document } from 'mongoose';
interface User {
id: string;
email: string;
}
interface UserModel extends User, Document {}
Model<UserModel> // doesn't throw an error anymore
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.