Сбой приложения Node.js при создании индексов для mongodb - PullRequest
0 голосов
/ 28 мая 2018

Когда я создаю индексы с помощью createIndex или ensureIndex методов, мое приложение node.js аварийно завершает работу без предоставления подробной информации о произошедшей ошибке.

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

Node.js: 8.5.0 Mongodb: 3.6.4 Драйвер Mongodb для Node.js: 3.0.8

Пример кода (но у меня естьпробовал разные варианты реализации, ничего не помогает):

db.collection('stars').ensureIndex({name: 1}, { unique: true });

Я уже прослушиваю uncaughtException и unhandledRejection события, но они не запускаются при этом сбое.

Что я могусделать, чтобы получить подробную информацию или избавиться от этой ошибки?

Спасибо за любую помощь!

Ответы [ 3 ]

0 голосов
/ 09 июля 2018

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

Если вы удалите {unique: true}, он должен выполнить работу, но он создаст дубликаты документов, если вы добавите тот же документ снова.

0 голосов
/ 03 сентября 2018

Проблема может быть связана с этой проблемой: NODE-1641 .У меня похожая проблема, и я нашел несколько решений:

  • Блокировка версии драйвера на 3.1.0 и добавление useNewUrlParser: true в настройках соединения.
  • В createIndex добавьте поле retryWrites: nullтак что в вашем случае это будет выглядеть так: db.collection('stars').ensureIndex({name: 1}, { unique: true, retryWrites: null });

Однако вам нужно проверить, не отключит ли она повторяющиеся записи для этой коллекции.

  • Последний вариант - проголосовать за эту проблему и надеяться, что она скоро будет решена, а затем обновить драйвер.
0 голосов
/ 30 июня 2018

Я обновил драйвер mongodb до версии 3.1.0 и в итоге получил сообщение об ошибке с описанием причины, вызывающей проблему.Согласно сообщению об ошибке: « Поле« retryWrites »недопустимо для спецификации индекса ».Итак, я думаю, что проблема была с этим полем, которое я использовал, чтобы добавить к моей строке URI соединения.После удаления этого поля я избавился от этой проблемы.

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