具有嵌套验证和严格模式的MongoDB模式

时间:2016-12-09 03:06:54

标签: mongodb validation mongoose mongoose-schema

我已经能够使用以下规则进行正确的模式验证:

  • 只应保存预期字段(因此严格模式)
  • User.Account应该可以为空。如果为null,则必需字段不会阻止保存架构。
  • 如果User.Account不为空,则需要遵守验证规则(.password.email)。
  • 我不想创建AccountSchema,因为它会account污染_id

我已经能够使用2个架构(UserSchemaAccountSchema)执行此操作。但如上所述,问题是它会在_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模式应该确保的对象架构安全。

由于

0 个答案:

没有答案