Mongoose - causé par :: 11000 E11000 erreur de clé en double index?
Pourquoi j'obtiens cette erreur de doublons - Error creating new user: WriteError({"code":11000,"index":0,"errmsg":"insertDocument :: caused by :: 11000 E11000 duplicate key error index
?
Tous les champs ne sont pas vides.
Schéma:
//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}
});
Post:
//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);
}
})
});
Erreur:
Erreur de création du nouvel utilisateur:
WriteError({"code":11000,"index":0,"errmsg":"insertDocument :: causé
par :: 11000 E11000 erreur de clé en double index: iotdb.utilisateurs.$name_1 dup
clé: { : null
}","op":{"username":"tealou","password":"$2a$10$7mPGND2FRuJDGnXaVTnkru2.xsGn2Ksf8veBKur4ouD9VUNj60RaC","_id":"5786020088245d33140d6f94","created_on":"2016-07-13T08:55:28.279 Z","__v":0}})
des idées?
Cela peut sembler un peu évident, mais existe-il d'autres utilisateurs dans la base de données avec le nom de l'utilisateur
il est tout prêt des données disponibles avec les mêmes données ..
tealou
?il est tout prêt des données disponibles avec les mêmes données ..
OriginalL'auteur laukok | 2016-07-13
Vous devez vous connecter pour publier un commentaire.
Vous avait initialement un champ appelé
name
dans votre schéma, qui a été mis àunique
.Comment puis-je savoir? En raison de l'erreur me disant donc:
Vous avez renommé le domaine de
username
, mais ne supprime pas l'ancien indice. Par défaut, MongoDB définir la valeur d'un champ inexistant ànull
dans ce cas.La documentation pertinente ici:
Pour résoudre ce problème, vous devez supprimer l'index de la renommée
name
champ.db.users.dropIndex({"name":1})
et a couru la poste à nouveau, puis il se porte comme un charme!Mec. tout simplement génial 🙂
C'était quelques sherlock holmes niveau de débogage
OriginalL'auteur robertklep
Abandon de la collection et en permettant à mon code pour recréer, c'est ce qui a fonctionné pour moi.
OriginalL'auteur Janac Meena