我已经能够使用以下规则进行正确的模式验证:
User.Account
应该可以为空。如果为null,则必需字段不会阻止保存架构。 User.Account
不为空,则需要遵守验证规则(.password
和.email
)。AccountSchema
,因为它会account
污染_id
。我已经能够使用2个架构(UserSchema
和AccountSchema
)执行此操作。但如上所述,问题是它会在_id
字段中创建User.Account
字段。
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
});
以下是只有UserSchema
的解决方案,但字段严格模式和验证未按预期工作。
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
模式应该确保的对象架构安全。
由于