/ / Mongoose не пресъздава индексната колекция е изпуснат - node.js, mongodb, mongoose

Mongoose не пресъздава индексната колекция е изпуснат - node.js, mongodb, mongoose

Знам, че трябва removeAll документи вместо да се откаже от събирането. Но защо мангоузата не пресъздава индекса, след като колекцията е изтекла?

Имам схема, в която има едно от полетата unique:true комплект. Индексът се създава, когато стартирам сървъра. Но ако пусна колекцията и се появяват нови записи, колекцията се пресъздава и се вмъкват записи. НО, индексът за уникалното поле не се създава отново.

Защо е така? Как да го помоля да пресъздаде индекса?

Отговори:

2 за отговор № 1

Няма нищо общо единствен по рода си, Ако пуснете индекса в mongodb, трябва да рестартирате възела.

Когато вашето приложение стартира, Mongooseавтоматично повиквания ensureIndex за всеки дефиниран индекс във вашата схема. Монгоуз ще се обади осигурете индексите за всеки индекс последователно и излъчете събитие "индекс" на модела, когато всички обаждания за гарантиране на индексите са успели или когато е имало грешка. Въпреки че е приятно за развитие, това поведение се препоръчва да бъдат забранени в производството, тъй като създаването на индекси може да доведе до значителни влияние върху ефективността.

Въпреки това, в режим на разработка можете да пресъздавате индекси в метода (например метод, свързан с маршрут или събитие) с:

(Mongodb > 3.0) db.collection.createIndex({})

(Mongodb < 3.0) db.collection.ensureIndex({})

С Mongoose изглежда така:

Model.ensureIndexes(function (err) {
if (err) {
return res.end(err);
}
});