Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Web Technology by (47.6k points)

Following is my user schema in user.js model -

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;

This is how I am using it in my controller -

var user = require('./../models/user.js');

This is how I am saving it in the db -

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 }"}

I checked the db collection and no such duplicate entry exists, let me know what I am doing wrong?

FYI - req.body.email and req.body.password are fetching values.

I also checked this post but no help STACK LINK

If I removed completely then it inserts the document, otherwise, it throws error "Duplicate" error even I have an entry in the local.email

2 Answers

0 votes
by (106k points)

If you are still in your development environment, I would drop the entire db and start over with your new schema.

From the command line

➜ mongo 

use dbName; 

db.dropDatabase(); 

exit 

0 votes
by (108k points)

The error message is saying that there is already a record with null as the email. If a document does not have a value for the indexed field in a unique index, the index will save a null value for this document. Because of the unique feature, MongoDB will only permit one document that lacks the indexed field. So just remove that null document and it will work.

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
asked Oct 18, 2019 in Web Technology by Sammy (47.6k points)
0 votes
2 answers

Browse Categories

...