我正在为mongoose中的用户模式条目编写验证。我希望在模式中设置两个条目(密码、googleId)中的任意一个为必需,但不是两个条目都为必需。我希望确保用户具有密码或googleId。如何做到这一点?以下是我的模式
const UserSchema = new mongoose.Schema({
password: {
type: String,
trim: true,
required: true,
validate: (value)=>
{
if(value.includes(this.uname))
{
throw new Error("Password must not contain username")
}
}
},
googleId: {
type: String,
required: true
}
});
3条答案
按热度按时间lymnna711#
您可以使用自定义验证器:
或者使用
pre
验证中间件xdyibdwo2#
Mongoose模式提供了一个
prevalidate
中间件,用于验证文档,并在验证之前对文档进行必要的修改。sqougxex3#
您可能要做的是添加一个预验证检查,然后调用next或使文档无效。
我还没试过呢。