Ошибка дублируемого значения нулевого ключа MongoDB с Mongoose - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь добавить пользователя в свою коллекцию пользователей и постоянно получаю сообщение об ошибке дублированного значения нулевого ключа.

Модель «Мои пользователи» раньше выглядела так:

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);

Прежде, чем я изменил поле изображений на

...
pictures = []
...

Я полагаю, потому что я сохранил пользователей по прежней схеме, он где-то сохранил модель объекта в массиве изображений (им будет дан ObjectId, когда я что-то сохранил в этом массиве). Даже если я изменил поле на

pictures = []

, я все еще получаю эту ошибку

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

Когда поля profilePictures и rank даже больше не существуют. Я полагаю, что я могу просто удалить коллекцию пользователей и начать заново, но я хочу знать, есть ли лучший способ справиться с этой ошибкой? Предположим, у меня было 100 пользователей в коллекции пользователей - я не смог бы просто удалить их всех. Спасибо!

1 Ответ

2 голосов
/ 14 января 2020

Вы добавили уникальное свойство true в вашей модели в profilePictures.rank. при первом запросе он сохраняет значение NULL, поскольку вы можете не указывать рейтинг в своем запросе.

второй раз он снова пытается сохранить ноль, но он также помечен как уникальный, поэтому выбрасывает исключение.

решение:

  • удалить уникальный флаг из profilePictures.rank

  • укажите уникальное значение для profilePictures.rank

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...