У меня есть схема Мангуста с именем city с полем автоинкремента с именем "id" , эта схема содержит массив другой схемы с автоинкрементом с именем "marker" .Проблема в том, что когда я вставляю город без маркеров, я получаю эту ошибку:
BulkWriteError: E11000 Коллекция дубликатов ошибок ключа: bd.cities index: markers.id_1 dup key: {: null}
Я попытался использовать свойство sparse и перехватить список предустановок города и установить массив маркеров неопределенным, но я действительно застрял с этой ошибкой.
схема города:
let mongoose = require('mongoose');
let autoIncrement = require('mongoose-auto-increment');
let Marker = require('./marker');
var MarkerSchema = require('mongoose').model('marker').schema;
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) {
if (this.markers && this.markers.length === 0) {
console.log('no markers')
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({
id: {
type: Number,
required: true,
unique: true,
sparse: true
},
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);