我已经在Nodejs中安装了MongoDB v4.0,它的最惊人功能是Transaction,驱动程序是mongodb3.1.

当我try 使用事务会话时,我遇到了以下错误:

MongoError:事务号只允许在副本集成员或mongos上使用.

那是什么?我怎样才能摆脱它?

任何建议都将不胜感激.

推荐答案

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.

使用npm's -g标志全局安装run rs.您还可以在package.json文件的devdependency中列出run r.

npm install run-rs -g

接下来,使用--version标志运行rs.Run rs将下载MongoDB v4.0.0给你.别担心,它不会覆盖现有的MongoDB安装.

run-rs -v 4.0.0 --shell

然后在连接字符串中使用100.

你可以找到更多关于它的细节.

Node.js相关问答推荐

容器端口是容器内 node 应用程序的端口吗?

express返回意外的URL

如何修复PostgreSQL和NodeJS/NestJS应用程序之间的日期时间和时区问题?

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

创建查询以展开数组并筛选出具有特定值的元素之后的元素

使用AWS SDK for JavaScript V3将图像从node.js上传到s3 bucket

express 和 mongoose 的新密码不正确

如何防止 Chrome 通过 Selenium 崩溃?

为什么后端开发需要单独的服务器?

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

kubernetes 上的 nextjs 无法启动

bash:npm:找不到命令?

使 pm2 登录到控制台

如何使用 Mocha 测试正常(非 node 特定)JavaScript 函数?

socket.io 发出回调合适吗?

在 Node.js 中的两个不同进程之间进行通信

nodejs - 如何读取和输出 jpg 图像?

在 react-router v4 中使用 React IndexRoute

Puppeteer 等待所有图像加载然后截图

如何修复此错误 TypeError [ERR_INVALID_CALLBACK]: Callback must be a function