Mongodb v4.0 Transaction, MongoError: номера транзакций разрешены только для члена набора реплик или mongos

Я установил MongoDB v4.0 для самой потрясающей особенности его транзакции в Nodejs с mongodb 3.1 в качестве драйвера.

Когда я пытаюсь использовать сеанс транзакции, я столкнулся с этой ошибкой:

MongoError: номера транзакций разрешены только для члена набора реплик или монго.

Что это и как я могу от него избавиться?

Любое предложение приветствуется.

Ответ 1

Transactions, несомненно, самая захватывающая новая функция в MongoDB 4.0. Но, к сожалению, большинство инструментов для установки и запуска MongoDB запускают автономный сервер, а не набор реплик. Если вы попытаетесь запустить сеанс на автономном сервере, вы получите эту ошибку.

Чтобы использовать транзакции, вам нужен набор реплик MongoDB, и запуск набора реплик локально для разработки является вовлеченным процессом. Новый run-rs npm module облегчает запуск наборов реплик. Запуск run-rs - это все, что вам нужно для запуска набора реплик, run-rs даже установит для вас правильную версию MongoDB.

Run-rs не имеет внешних зависимостей, кроме Node.js и npm. Вам не нужно устанавливать Docker, homebrew, APT, Python или даже MongoDB.

Установите run-rs глобально с флагом npm -g. Вы также можете перечислить run-rs в своем devDependencies файла package.json.

npm install run-rs -g

Затем запустите run-rs с флагом --version. Run-rs скачает MongoDB v4.0.0 для вас. Не волнуйтесь, это не перезапишет вашу существующую установку MongoDB.

run-rs -v 4.0.0 --shell

Затем используйте replicaSet=rs в строке подключения.

Вы найдете более подробную информацию об этом здесь.

Ответ 2

Я боролся с этой проблемой в течение нескольких недель. Я позволю тебе мой вывод. Чтобы иметь возможность использовать транзакции в изолированном кластере, вам нужно запустить как минимум MongoDB 4.2 в своем кластере. Если кластер не огорожен, с 4.0. Я использовал библиотеку, имеющую в качестве драйвера NodeJS mongodb для зависимостей. Этот драйвер из версии 3.3.x не работает на изолированном кластере MongoDB с версией 4.0.4. Решением для меня было обновить мой кластер до версии 4.2.

ЦСИ: https://www.bmc.com/blogs/mongodb-transactions/