El siguiente es mi user
esquema en el user.js
modelo:
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;
Así es como lo estoy usando en mi controlador:
var user = require('./../models/user.js');
Así es como lo estoy guardando en la base de datos:
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"});
}
});
error -
{"name":"MongoError","code":11000,"err":"insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb.users.$email_1 dup key: { : null }"}
Verifiqué la colección de db y no existe tal entrada duplicada, ¿me avisas qué estoy haciendo mal?
FYI - req.body.email
y req.body.password
están obteniendo valores.
También revisé esta publicación pero no ayudé STACK LINK
Si eliminé completamente, entonces inserta el documento, de lo contrario arroja el error "Duplicar" incluso si tengo una entrada en el correo electrónico local.
unique: false
no estaba teniendo ningún impacto. Me di cuenta de que primero tenía que dejar caer la mesa y luego funcionaría. Puedes hacer algo como db.whateverthecollection.drop({})
. Tenga cuidado, elimina la colección.