mongoDB中多个唯一键上的E11000重复键错误

问题描述 投票:0回答:1

我的userSchema中有2个唯一键:

email: {
        type: String,
        required: true,
        unique: true
    },
username: {
        type: String,
        required: true,
        unique: true
    }

您无法添加数据库中已经存在的用户名或电子邮件。由于只有一个错误代码,我怎么能告诉用户数据库中已经确切存在一个?

if (err.code == 11000)
    return res.status(422).send(['Duplicate email adrress found.']);
node.js database mongodb key mean-stack
1个回答
1
投票
对于emailusername上的这两个唯一索引,如果可以使用::获得索引名称,则>

db.collectionName.getIndexSpecs()

然后在插入时出现重复的键错误:

WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }" } })

在您的代码中,您可以做:

if (err.code == 11000) { if (err.msg.includes("email_1")) { // assuming name is `email_1` & also you can trim msg to get failing input value. return res.status(422).send(["Duplicate email address found."]); } else { return res.status(422).send(["Duplicate username found."]); } }

© www.soinside.com 2019 - 2024. All rights reserved.