为什么会出现此重复错误- Error creating new user: WriteError({"code":11000,"index":0,"errmsg":"insertDocument :: caused by :: 11000 E11000 duplicate key error index?
Error creating new user: WriteError({"code":11000,"index":0,"errmsg":"insertDocument :: caused by :: 11000 E11000 duplicate key error index
提供的所有字段都不为空。
架构:
// Declare schema var userSchema = new mongoose.Schema({ username: {type: String, required: true, index: {unique: true}}, password: {type: String, required: true}, created_on: {type: Date, default: Date.now} });
发布:
// Create - POST // Create the first method of the API : POST used to create a new user. router.post("/", function(req, res, next) { // Get values from POST request var username = req.body.username; var password = req.body.password; console.log(req.body); // { username: 'tealou', password: 'test123' } // Create new user document User.create({ username: username, password: password }, function(err, user) { console.log(user); // undefined if (err) { console.log("Error creating new user: " + err); res.send("Error creating new user."); } else { console.log("POST creating new user: " + username); res.json(user); } }) });
错误:
创建新用户时出错:WriteError({:“ 11000,” index“:0,” errmsg“:” insertDocument ::由:: 11000 E11000重复键错误导致:iotdb.users。$ name_1 dup key:{: null}“,” op“:{”用户名“:” tealou“,”密码“:” $ 2a $ 10 $ 7mPGND2FRuJDGnXaVTnkru2.xsGn2Ksf8veBKur4ouD9VUNj60RaC“,” _ id“:” 5786020088245d33140d6f94“:”“创建55:28.279Z“,” __ v“:0}})
有任何想法吗?
您最初name在架构中有一个称为的字段,该字段设置为unique。
name
unique
我怎么知道?由于错误告诉我:
duplicate key error index: **iotdb.users.$name_1**
您将字段重命名为username,但没有删除旧索引。在这种情况下,默认情况下,MongoDB会将不存在的字段的值设置为null。
username
null
相关文档在这里:
如果文档在唯一索引中没有索引字段的值,则索引将为此文档存储一个空值。由于存在独特的约束,MongoDB将只允许一个缺少索引字段的文档。
要解决此问题,您需要删除重命名name字段的索引。