I've installed MongoDB v4.0
for the most amazing feature of it Transaction in Nodejs with mongodb
3.1 as a driver.
When I try to use a transaction session I've faced this error:
MongoError: Transaction numbers are only allowed on a replica set member or mongos.
What's that and how can I get rid of it?
Transactions
are undoubtedly the most exciting new feature in MongoDB 4.0
. But unfortunately, most tools for installing and running MongoDB start a standalone server as opposed to a replica set. If you try to start a session on a standalone server, you'll get this error.
In order to use transactions, you need a MongoDB replica set, and starting a replica set locally for development is an involved process. The new run-rs npm module
makes starting replica sets easy. Running run-rs is all you need to start a replica set, run-rs will even install the correct version of MongoDB
for you.
Run-rs has no outside dependencies except Node.js
and npm
. You do not need to have Docker
, homebrew
, APT
, Python
, or even MongoDB
installed.
Install run-rs globally with npm's -g
flag. You can also list run-rs in your package.json
file's devDependencies.
npm install run-rs -g
Next, run run-rs with the --version flag. Run-rs will download MongoDB v4.0.0 for you. Don't worry, it won't overwrite your existing MongoDB install.
run-rs -v 4.0.0 --shell
Then use replicaSet=rs
in your connection string.
You find more details about it here.