我的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.']);
email
和username
上的这两个唯一索引,如果可以使用::获得索引名称,则>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."]);
}
}