Node.js Автоинкремент E11000 коллекция дубликатов ошибок ключа - PullRequest
0 голосов
/ 27 октября 2018

Я борюсь с ошибкой E11000, сбор дубликатов ошибок ключей, у меня есть схема с другим массивом подсхем, и когда я пытаюсь вставить мою схему с пустым массивом, я всегда получаю эту ошибку. Я попытался установить его неопределенным при предварительном сохранении без успехов ... Я удалил свою схему из mongoDB и ее индексов. Ошибка появляется после того, как я ввел ** автоинкремент ** в схему маркера.

Схема города:

            let mongoose = require('mongoose');
            let autoIncrement = require('mongoose-auto-increment');
            let Marker = require('./marker');

            var MarkerSchema = require('mongoose').model('marker').schema;

            //City Schema
            //status : 1 Ok, 2 Hidden, 3 Deleted


            let citySchema = mongoose.Schema({
               id: {
                type: Number,
                required: true
              },
              name: {
                type: String,
                required: true
              },
              status: {
                type: Number,
                required: true
              },

              coordinates: {
                latitude: {
                  type: Number,
                  required: true
                },
                longitude: {
                  type: Number,
                  required: true
                }
              },
              markers: [MarkerSchema]

            });

            citySchema.pre('save', function (cb) {
              console.log('pre save');
              if (this.markers && this.markers.length === 0) {
              this.markers = undefined;
              }
              cb();
            });

            citySchema.plugin(autoIncrement.plugin, {
                model: 'city',
                field: 'id',
                startAt: 1,
                incrementBy: 1
            });


            let City = module.exports = mongoose.model('city', citySchema);

схема маркера

            let mongoose = require('mongoose');
            let autoIncrement = require('mongoose-auto-increment');

            let markerSchema = mongoose.Schema({
                status: {
                    type: Number,
                    required: true
                  },
                description: {
                  type: String,
                  required: true
                },
                coordinates: {
                    latitude: {
                      type: Number,
                      required: true
                    },
                    longitude: {
                      type: Number,
                      required: true
                    }
                }
            });

            markerSchema.plugin(autoIncrement.plugin, {
                model: 'marker',
                field: 'id',
                startAt: 1,
                incrementBy: 1
            });

            let Marker = module.exports = mongoose.model('marker', markerSchema);

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Возникла та же проблема ... Скорее всего, это вызвано модулем mongoose-auto-increment ...

0 голосов
/ 28 октября 2018

попробуйте это:

let citySchema = new mongoose.Schema({
               id: {type: Number, default: 0, unique: true},
....

Я думаю, что ошибка в том, что вы не определили начальное значение, где должно работать автоинкремент, и тот факт, что оно не объявлено как уникальное?

...