我有一個MongoDB的架構像這樣MongoError,ERR:E11000重複鍵錯誤
var User = new Schema({
"UserName": { type: String, required: true },
"Email": { type: String, required: true, unique: true },
"UserType": { type: String },
"Password": { type: String }
});
我想創建一個新的用戶 這在的NodeJS使用貓鼬ODM 完成,這是創建代碼:
controller.createUser = function (req, res) {
var user = new models.User({
"UserName": req.body.UserName.toLowerCase(),
"Email": req.body.Email.toLowerCase(),
"UserType": req.body.UserType.toLowerCase()
});
models.User.findOne({ 'Email': user.Email }, function (err, olduser) {
if (!err) {
if (olduser) {
res.send({ 'statusCode': 409, 'statusText': 'Email Already Exists' });
}
else if (!olduser) {
user.setPassword(req.body.Password);
user.save(function (err, done) {
if (!err) {
console.log(user);
res.send({ 'statusCode': 201, 'statusText': 'CREATED' });
}
else {
res.send({ 'Status code': 500, 'statusText': 'Internal Server Error' });
}
});
}
}
else {
res.send({ 'statusCode': 500, 'statusText': 'ERROR' });
}
});
};
的用於創建新的用戶,我給的屬性和值如下:
{
"UserName": "ann",
"Email": "[email protected]",
"UserType": "normaluser",
"Password":"123456"
}
而且我得到的錯誤是這樣的:具有獨特constraint.Whenever
{"Status code":500,"statusText":"Internal Server Error","Error":{"name":"MongoError","err":"E11000 duplicate key error index: medinfo.users.$UserName_1 dup key: { : \"ann\" }","code":11000,"n":0,"connectionId":54,"ok":1}}
我明白,這個錯誤是因爲用戶名是重複的,但我沒有設置用戶名我添加一個新行,我只需要電子郵件是唯一的,用戶名可以重複。如何實現這?
也許它使用第一列作爲主鍵? – ManseUK
這是一個純粹的猜測 - 我對這個問題更感興趣,而不是在這個問題上的專家 - 對不起 – ManseUK
我不這麼認爲,具有相同用戶名的前一個對象具有「_id」屬性,我相信它是主要的鍵。像這樣的「用戶名」:「安」, 「電子郵件」:「安@ f。COM」, 「用戶類型」: 「normaluser」, 「密碼」: 「123456」 「_id」: 「5056d1c7e71c8a0c150003b3」 }' – dany