我正在为我的用户创建一个模型。每个用户都有一个isVerified布尔值属性。我希望能够调用Model.find猫鼬模型并排除所有文档,而isVerified === false不必在查询期间指定这一点。我想在架构中设置它,以便每当Model.find调用时这些文档都会自动排除。任何帮助表示赞赏
用户模型:
const UserSchema:Schema = new Schema({
name: {
type: String,
required: true,
trim: true,
},
email: {
type: String,
required: true,
unique: true,
lowercase: true,
trim: true,
index: true,
validate: {
validator: (value:string) => validator.isEmail(value),
message: (props:any) => "Invalid Email Address"
},
},
password: {
type: String,
trim: true,
required: true,
select: false,
minlength: 6,
validate: {
validator: (value:string) => !validator.contains(value, "password"),
message: (props:any) => "Your password cannot contain the word 'password'"
}
},
phoneNumber: {
type: String,
trim: true,
required: true,
validate: {
validator: (value:string) => validator.isMobilePhone(value, 'any', {strictMode: true}),
message: (props:any) => "Please include country code (e.g. +233 for Ghana +44 for the United Kingdom) to phone number"
}
},
isActive: {
type: Boolean,
default: false
}
,
tokens: [
{
token: {
type: String,
required: true
}
}
]
},{
strict: "throw",
timestamps: true
})
编辑:
我做了一些挖掘,看来我可以覆盖基本方法来重新实现返回的查询。我尝试这样做,如下所示:
UserSchema.statics.find = function () {
let query = UserModel.find.apply(this, arguments);
query.where('isActive').ne(false)
return query;
}
但是我收到以下错误
RangeError: Maximum call stack size exceeded
Qyouu
相关分类