猫鼬模式 - 要求一个是独特的,但不是两个

时间:2013-05-21 15:25:34

标签: node.js mongodb mongoose

我想存储一个电子邮件字符串和密码,其中只有一个需要是唯一的。因此,有人可以使用相同的电子邮件地址和2个不同的密码(或100个),并拥有100个帐户,但所有密码必须不同,但是,只要他们的电子邮件地址不是,有人应该仍然能够拥有与其他人相同的密码。相同。

我似乎无法在任何mongoose模式文档中找到任何此类事情的示例。

使用adreas建议我有:

var userSchema = new Schema({
    email: {
        type: String,
        required: true,
        index: true
    },
    password: {
        type: String,
        required: true,
        index: true
    }
});
//either email or password must be unique if the other is not
userSchema.index({
    "email": 1,
    "password": 1
}, {
    unique: true
});

module.exports = mongoose.model('User', userSchema);

它仍然允许我使用相同的电子邮件通过相同的电子邮件。

1 个答案:

答案 0 :(得分:0)

Compound index应该是您所需要的。

User.index({ email: 1, hashedPassword: 1 }, { unique: true });

这样实现它可能会带来安全风险,因为您必须在两个帐户上使用相同的盐。只是不要存储纯文本。