簡體   English   中英

Mongoose + Typescript 自定義文檔界面不工作

[英]Mongoose + Typescript custom doc interface not working

我已經在 mongoose + typescript 上工作了很長一段時間。 但是我在為我的模式創建CustomDoc 接口時遇到了這個問題。

錯誤

Typescript 未驗證 mongoose 查詢返回的文檔,它顯示類型any

自定義文檔界面

interface UserAttrs {
  name: string;
  email: string;
  password: string;
}

interface UserDoc extends mongoose.Document {  // <== here
  name: string;
  email: string;
  password: string;
  isAdmin: Boolean;
  createdAt: Date;
}

interface UserModel extends mongoose.Model<UserDoc> {
  build: (attrs: UserAttrs) => UserDoc;
}

const userSchema = new mongoose.Schema(
  {
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    isAdmin: { type: Boolean, default: false },
    createdAt: { type: Date, default: Date.now() },
  }
);
userSchema.statics.build = (attrs: UserAttrs) => {
  return new User(attrs);
};

export const User = mongoose.model<UserDoc, UserModel>("User", userSchema);

錯誤/問題

在此處輸入圖像描述

根據我的理解,它應該有一種UserDocundefined 這就是為什么我無法在從用戶文檔中解構用戶屬性時進行驗證的原因,這樣使用 TS 是沒有意義的。

試試這個:

interface UserAttrs {
  name: string;
  email: string;
  password: string;
}

interface UserDoc extends UserAttrs, mongoose.Document {  
  isAdmin: Boolean;
  createdAt: Date;
}


const userSchema = new mongoose.Schema(
  {
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    isAdmin: { type: Boolean, default: false },
    createdAt: { type: Date, default: Date.now() },
  }
);
userSchema.statics.build = (attrs: UserAttrs) => {
  return new User(attrs);
};

export const User = mongoose.model<UserDoc>("User", userSchema);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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