javascript - Mongodb v4.0 事务,MongoError : Transact

我已经安装了 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.jsnpm 之外没有外部依赖。你不需要 DockerhomebrewAPTPython,甚至 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/

相关文章:

mongodb - 通过 REST API 公开 mongodb 查询是否安全?

python - 如何将数据读入 TensorFlow?

mongodb - CouchDB 或 MongoDB 中的多对多关系

javascript - node.js mongodb - collection.find().t

mongodb - 我应该使用哪个 Node 的 mongo 驱动程序?

mongodb - 使用 ReadPreference=NEAREST 的 Mongos 路由

mongodb-csharp 驱动程序 - 如何将属性保存为引用而不是嵌入?

mongodb - MongoDB中的外键关系

mongodb - mongo 聚合结果超出最大文档大小

node.js - 在 Mongoose 中更新具有不同值的多个元素