我已经安装了 MongoDB v4.0
以在 Nodejs 中使用 mongodb
3.1 作为驱动程序来实现它 Transaction 最令人惊叹的功能。
当我尝试使用事务 session 时,我遇到了这个错误:
MongoError: Transaction numbers are only allowed on a replica set member or mongos.
那是什么,我怎样才能摆脱它?
感谢任何建议。
最佳答案
Transactions
无疑是 MongoDB 4.0
中最令人兴奋的新特性。但不幸的是,大多数安装和运行 MongoDB 的工具都会启动独立服务器,而不是副本集。如果您尝试在独立服务器上启动 session ,则会收到此错误。
为了使用事务,您需要一个 MongoDB 副本集,并且在本地启动副本集进行开发是一个复杂的过程。新的 run-rs npm 模块
使启动副本集变得容易。运行 run-rs 即可启动副本集,run-rs 甚至会为您安装正确版本的 MongoDB
。
Run-rs 除了 Node.js
和 npm
之外没有外部依赖。你不需要 Docker
、homebrew
、APT
、Python
,甚至 MongoDB
已安装。
使用 npm 的 -g
标志全局安装 run-rs。您还可以在 package.json
文件的 devDependencies 中列出 run-rs。
npm install run-rs -g
接下来,使用 --version 标志运行 run-rs。 Run-rs 将为您下载 MongoDB v4.0.0。别担心,它不会覆盖您现有的 MongoDB 安装。
run-rs -v 4.0.0 --shell
然后在您的连接字符串中使用 replicaSet=rs
。
您可以找到有关它的更多详细信息here .
关于javascript - Mongodb v4.0 事务,MongoError : Transaction numbers are only allowed on a replica set member or mongos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51461952/