Voici mon user
schéma dans le user.js
modèle -
var userSchema = new mongoose.Schema({
local: {
name: { type: String },
email : { type: String, require: true, unique: true },
password: { type: String, require:true },
},
facebook: {
id : { type: String },
token : { type: String },
email : { type: String },
name : { type: String }
}
});
var User = mongoose.model('User',userSchema);
module.exports = User;
Voici comment je l'utilise dans mon contrôleur -
var user = require('./../models/user.js');
Voici comment je l'enregistre dans la base de données -
user({'local.email' : req.body.email, 'local.password' : req.body.password}).save(function(err, result){
if(err)
res.send(err);
else {
console.log(result);
req.session.user = result;
res.send({"code":200,"message":"Record inserted successfully"});
}
});
Erreur -
{"name":"MongoError","code":11000,"err":"insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb.users.$email_1 dup key: { : null }"}
J'ai vérifié la collection db et aucune entrée en double n'existe, faites-moi savoir ce que je fais mal?
FYI - req.body.email
et req.body.password
récupèrent des valeurs.
J'ai aussi vérifié ce post mais sans aide STACK LINK
Si j'ai supprimé complètement, il insère le document, sinon il génère une erreur "Duplicate" même si j'ai une entrée dans le local.email
unique: false
n'a eu aucun impact. J'ai réalisé que je devais d'abord laisser tomber la table et ensuite ça marcherait. Vous pouvez faire quelque chose comme db.whateverthecollection.drop({})
. Attention, il supprime la collection.