n_1
n_1

Reputation: 65

Duplicate null key value error MongoDB with Mongoose

I'm trying to add a user to my users collection and keep getting a duplicate null key value error.

My Users model used to look like this like this:

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  profilePictures: [{
    link: {
       type: String
    }
    rank: {
       type: Number,
       unique: true
    }
  }],
});

module.exports = User = mongoose.model("users", UserSchema);

Before I changed the pictures field to

...
pictures = []
...

I believe because I saved users under the former schema, it has saved somewhere the model of the object in the pictures array (they would be given an ObjectId when I saved something to that array). Even though I have changed the field to

pictures = []

I still get this error

E11000 duplicate key error collection: testDB.users index: profilePictures.rank_1 dup key: { profilePictures.rank: null }

When neither profilePictures nor rank fields even exist anymore. I imagine I can probably just delete the users collection and start again but I want to know if there is a better way to handle this error? Suppose I had 100 users in the users collection – I wouldn't be able to just delete them all. Thanks!

Upvotes: 0

Views: 1402

Answers (1)

Ankit Kataria
Ankit Kataria

Reputation: 147

you added unique property true in your model to profilePictures.rank. on first request it is saving null as you may be not providing rank in your query.

second time it is again trying to save null but it is also marked unique so it is throwing exception.

solution:

  • remove unique flag from profilePictures.rank

  • provide unique value for profilePictures.rank

Upvotes: 2

Related Questions