具有嵌套验证和严格模式的MongoDB模式
我已经能够使用以下规则进行正确的模式验证:具有嵌套验证和严格模式的MongoDB模式,mongodb,validation,mongoose,mongoose-schema,Mongodb,Validation,Mongoose,Mongoose Schema,我已经能够使用以下规则进行正确的模式验证: 应仅保存预期字段(因此为严格模式) User.Account应为空。如果为null,则必填字段不会阻止保存架构 如果User.Account不为空,则需要遵守验证规则(.password和.email必需) 我不想创建AccountSchema,因为它会用\u id污染帐户 我已经能够用两种模式来实现这一点(UserSchema和AccountSchema)。但如前所述,问题在于它在User.Account字段中创建了一个\u id字段 const
- 应仅保存预期字段(因此为严格模式)
应为空。如果为null,则必填字段不会阻止保存架构李>User.Account
- 如果
不为空,则需要遵守验证规则(User.Account
和.password
必需).email
- 我不想创建
,因为它会用AccountSchema
污染\u id
帐户
UserSchema
和AccountSchema
)。但如前所述,问题在于它在User.Account
字段中创建了一个\u id
字段
const AccountSchema: Mongoose.Schema = mongoose.Schema({
password: { type: String, required: true },
email: { type: String, required: true }
}, {
strict: 'throw',
useNestedStrict: true
});
const UserSchema: Mongoose.Schema = mongoose.Schema({
name: { type: String, required: true },
account: AccountSchema
}, {
strict: 'throw',
useNestedStrict: true
});
这是一个仅使用用户模式的解决方案,但字段严格模式和验证没有按预期工作
const UserSchema: Mongoose.Schema = mongoose.Schema({
name: { type: String, required: true },
account: {
type: {
password: { type: String, required: true },
email: { type: String, required: true }
},
required: false
}
}, {
strict: 'throw',
useNestedStrict: true
});
有人能告诉我我错过了什么吗
顺便说一句,我尝试了自定义验证,但它不能保证strict
模式应该确保的对象模式安全
谢谢