![](/img/trans.png)
[英]Mongoose Schema type as a custom interface from 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);
錯誤/問題
根據我的理解,它應該有一種UserDoc
或undefined
。 這就是為什么我無法在從用戶文檔中解構用戶屬性時進行驗證的原因,這樣使用 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.