簡體   English   中英

打字稿和貓鼬模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM