【发布时间】:2021-01-28 06:49:38
【问题描述】:
我已经在 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 毫无意义。
【问题讨论】:
标签: node.js mongodb typescript mongoose