Atlas 上的 Mongoose 与 ReplicaSet

2024-03-18

我在 MongoDB Atlas 上有一个副本集,这是我的 mongo shell 连接字符串,可以完美连接:

$ mongo "mongodb://MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE?replicaSet=MY_REPLICASET-NAME-shard-0" --ssl --username MY_USERNAME --password MY_PASSWORD --authenticationDatabase MY_ADMIN_DATABASE

我如何将其转换为在猫鼬中使用?如何构建我的 uri 和选项变量?

我尝试了以下操作但没有成功:

  // connection string using mongoose:
  var uri = 'mongodb://MY_USER:MY_PASSWORD@' +
    'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +
    'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +
    'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE';

  var options = {
    replset: {
      ssl: true,
      authSource: 'MY_ADMIN_DATABASE',
      rs_name: 'MY_REPLICASET_NAME-shard-0'
    }
  };

  mongoose.connect(uri, options);
  var db = mongoose.connection;

我尝试过在选项上包含 user: 和 pass: ,从 uri 中删除 MY_USER:MY_PASSWORD@ ,将 rs_name 更改为replicaSet,每次尝试都失败了。看来 mongoose 没有考虑 authSource 选项。

使用 mongojs,它可以与以下代码一起正常工作:

  // connection string using mongojs:
  var uri = 'mongodb://MY_USER:MY_PASSWORD@' +
    'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +
    'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +
    'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE';

  var options = {
    ssl: true,
    authSource: 'MY_ADMIN_DATABASE',
    replicaSet: 'MY_REPLICASET_NAME-shard-0'
  };

  var db = mongojs(uri,'', options);

但是,我需要使用 mongoose,因为我的项目中是 ODM。

如何使用 mongoose 构建我的 uri 和选项变量?


在 MONGODB 3.4.x 上

根据文档,我解决了这个问题,将“选项”值直接放入“uri”字符串中(http://mongoosejs.com/docs/connections.html http://mongoosejs.com/docs/connections.html)在“副本集连接”部分。

// connection string using mongoose:
var uri = 'mongodb://MY_USER:MY_PASSWORD@' +
  'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +
  'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +
  'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE' +
  'ssl=true&replicaSet=MY_REPLICASET_NAME-shard-0&authSource=MY_ADMIN_DATABASE';

mongoose.connect(uri);
var db = mongoose.connection;

现在,一切正常!

MONGODB 3.6 的通知

在使用版本 3.6.x 的 MongoDB Atlas 上,连接字符串更改为使用 DNS 服务器,从而使链接更短。

mongodb+srv://MY_USER:MY_PASSWORD@MY_SERVER.mongodb.net/MY_DATABASE

...如果您在应用程序中使用此连接字符串,这将成功连接,但只能由具有更高权限访问权限的 atlas 用户(atlasAdmin、readWriteAnyDatabase...)进行读写。

要与仅具有读写数据库权限的特定用户合作,您将需要保留 MongoDB 3.4 中使用的相同连接字符串,因为 mongoose 无法识别 DNS​​ 选项 (mongodb+srv)。

附: MongoDB 3.6.x 中的所有新资源将继续正常工作!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Atlas 上的 Mongoose 与 ReplicaSet 的相关文章

  • MongoDB:在具有未知键的对象中查找给定字段值的文档

    我正在建立一个关于论文 论点的数据库 它们与其他参数相关 我将这些参数放置在带有动态键 https stackoverflow com questions 12393351 using a variable in mongodb updat
  • mongoose - 填充子模式子数组

    我正在尝试填充子架构字段 A Project包含多个项目过滤器 Each 项目过滤器参考文献一过滤值 A 过滤值包含在一个 并且只有一个 中Filter 项目架构 const ProjectSchema new Schema title S
  • 使用 Sequelize 实现单表继承

    有没有办法使用sequelize来创建单表继承 我希望有一个用于购买和 PartialPurchase 模型的 STI 其中我将有一个类型字段 该字段为 Purchase 或 PartialPurchase 以及类 Purchasing 和
  • Plesk Windows 部署 Node.js

    我创建了一个以 Node js 作为后端的 Angular 项目 这是服务器文件结构 Home directory httpdocs node hm dist browser folder server folder server js p
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • Azure VM 上的 MongoDb 连接超时

    将我的 Azure Web 应用程序连接到 Azure VM 上托管的 MongoDb 时 我遇到一些超时问题 2015 12 19T15 57 47 330 0100 I NETWORK Socket recv errno 10060 A
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • Mongoose 和 Promise:如何获取查询结果数组?

    使用猫鼬从数据库和 Q 中查询结果以获取承诺 但发现很难只获取可用用户列表 目前我有一些这样的东西 var checkForPerson function person people mongoose model Person Person
  • 流星内存不足

    我正在使用流星来制作报废引擎 我必须执行一个 HTTP GET 请求 这会向我发送一个 xml 但这个 xml 大于 400 ko 我得到一个异常 内存不足 result Meteor http get http SomeUrl com 致
  • PrototypeJS 版本 1.6.0.2 覆盖 JSON.parse 和 JSON.stringify 并破坏 socket.io 功能

    基本上 socket io 使用 nativeJSON 来编码和解码数据包 而我的问题是我必须使用这个版本的原型来改变 JSON 行为 当我应该进入服务器时 如下所示 socket on event function a b c 我明白了s
  • 建立 TCP 连接边界的正确方法

    我的问题是关于如何正确处理使用 tcp 连接接收的数据 事实上 通过建立 tcp 连接 创建了一个流 假设我想发送一条有开头和结尾的消息 由于数据在流中流动而没有指定任何边界 我如何识别消息的开始和结束 我想在消息的开头和结尾处放置一些特殊
  • 除 .spec.js 之外的每个 .js 文件的节点 glob 模式

    我正在寻找更好的全局模式以供使用 我想找到所有 js文件但排除 spec js文件 到目前为止我有以下解决方案 我目前拥有的解决方案要求我不断添加文件扩展名以排除它们 否则它们会被拾取 例如 html files 我试图让它只寻找 js文件
  • 猫鼬不创建索引

    我最近开始使用 Mongoose v 3 2 1 但我遇到了索引问题 我在我的模式 Schema path attr index true 上定义了几个索引 但它们不是在数据库中创建的 我在 shell 中运行 db collection
  • 如何强制 pm2 在特定时间后重新启动?

    我在用PM2让我的 Node js 应用程序保持运行 有什么办法可以拥有PM2每 1 小时重新启动一次我的应用程序 将下面的代码放入pm2 js并开始它pm2 start pm2 js var pm2 require pm2 pm2 con
  • 打字稿:“找不到模块”且输入有效

    我刚刚使用 typescript 启动了一个新的 Nodejs 项目 我安装了打字 https github com typings typings https github com typings typings 并使用它来安装 Node
  • Google App Engine - 节点:找不到模块“firebase-admin”

    第一次在这里部署 GAE 应用程序 我尝试遵循本教程 https firebase googleblog com 2016 08 sending notifications Between android html https fireba
  • Node.js 每个用户一个会话

    如何防止我的用户同时从两个设备登录我的系统 因此 如果用户从计算机登录 当他从不同的计算机登录时 首先会自动关闭会话 不需要使其实时 我使用node js express js mongoose passport connect mongo
  • 尝试将 Firebase 版本回滚到 2.X

    我最近更新到了新的 Firebase 3 但不幸的是 据我所知 它目前不支持 Geofire 查询 这对我的应用程序很重要 我已经将应用程序中的其他所有内容都转为使用 Firebase 2 但是当我尝试时要将我的应用程序部署到 fireba
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o

随机推荐

  • 如何更正此 sql 连接上的相关名称?

    我需要一个连接 从两个不同的表中生成三个具有相同名称的字段 当我尝试运行 sql 查询时 VS 给出以下错误 FROM 子句中的对象 PoliticalFigures 和 PoliticalFigures 具有相同的公开名称 使用相关名称来
  • 为什么每个字符串上都有空字符串? [复制]

    这个问题在这里已经有答案了 例如 gt gt gt s python gt gt gt s index 0 gt gt gt s index p 0 这是因为从索引 0 开始的长度为 0 的子串 python 等于空字符串 gt gt gt
  • java regex:从字符串中获取可能变化的子字符串

    我有一个像这样的字符串 Bangalore India Karnataka 我只想从这个字符串中提取子字符串 Bangalore 在这种情况下 正则表达式可以是 但问题是 字符串有时可能只是 Bangalore 那么在这种情况下 上面的正则
  • 为什么 Xcode 在创建地址清理构建时定义 _LIBCPP_HAS_NO_ASAN?

    Xcode 7 允许使用地址清理器来查找 C C 中的内存问题 https github com google sanitizers wiki AddressSanitizer https github com google sanitiz
  • 如何在 Eclipse 中启用 TODO/FIXME/XXX 任务标签?

    在我使用 Eclipse 的这些年里 直到现在我才知道 TODO FIXME XXX 注释标签应该出现在任务列表中 显然 默认情况下这是禁用的 因为只要我使用 Eclipse 我就一直在使用这些标签 而且我从未见过其中一个出现在任务列表中
  • C 中的嵌入式 perl、perlapio - 与 STDIO 的互操作性

    我刚刚意识到 PerlIO 层似乎不仅仅 或多或少 轻松地包装 stdio h 函数 如果我尝试使用通过以下方式解析的文件描述符PerlIO stdout and PerlIO fileno 对于 stdio h 中的函数 这会失败 例如
  • AutoFixture 和私有财产

    我可以指导吗汽车夹具 https github com AutoFixture还可以填充私有属性 并用特定属性进行注释 例如Ninject Inject 所有类别中 来源似乎只扫描公共属性 1 https github com AutoFi
  • 动态数组 - 如何增加数组的大小?

    我正在从文件中读取数字 然后尝试将它们添加到数组中 我的问题是如何增加数组的大小 例如 我认为也许可以这样做 include
  • 通过 CLI 更新 AWS API Gateway 资源策略的语法是否正确?

    我正在尝试通过 CLI 更新 API 网关实例上的资源策略 但我似乎找不到正确的 JSON 语法 在文档中 它说使用 补丁操作 据我了解 它需要一串 JSON 来表示策略 我尝试过缩小 JSON 转义 JSON 单引号 无引号 但似乎都不起
  • 如何卸载附加场景?

    我正在制作一款坦克战游戏 每轮后都会随机生成新的关卡 在我的游戏管理器中 我试图让回合从随机范围索引中的附加加载场景开始 然后以卸载场景结束 然后加载到新的随机场景中 然而 我所做的每一次尝试都会导致某种形式的错误 我一直被引导到 Load
  • 我如何在 Heroku 上安排“每周”工作?

    我在 Heroku 上部署了一个 Rails 应用程序 并使用 Heroku 调度程序插件成功处理日常工作 现在我想要一个每周工作 但调度程序附加组件不允许我每周选择 关于我如何实现这一目标的任何建议 我过去曾尝试使用 rufus sche
  • 折线(路线)悬停时的工具提示

    我已经在地图上标出了路线 使用一些坐标生成的路线 其中包含附加信息 速度 我希望当路线悬停时 会出现一个工具提示并显示这些坐标处的信息 速度 我很困惑如何显示速度的工具提示
  • 领域驱动设计中的 WCF 序列化和值对象模式

    Eric Evans 所著的 领域驱动设计 一书描述了称为值对象的模式 值对象的重要特征之一是它是不可变的 作为一个例子 我有一个值对象 Clinic 其中must有名字和id 为了使其成为值对象 我不提供名称和 ID 的设置器 另外 为了
  • 如何在sql server中的列中存储多个值

    我正在创建职位申请 在我的第一个表中 列是这是我的主表 ID Position jobDescription minExp maxExp LastDate InterviewDate Project HiringManager interv
  • 禁止 GCC 下的不兼容指针类型特定警告

    在 GCC 下的代码中 我收到了很多这两种类型的警告 warning passing argument 1 of foo from incompatible pointer type and warning assignment from
  • Android加载动画

    我正在寻找一些有关如何在 android 中创建加载动画的信息 是否可以创建这个动画 我可以在一个线程中调用这个动画并在另一个线程中结束 我正在寻找这个 尝试下面的代码 显示进度对话框 ProgressDialog mDialog new
  • .NET 泛型术语 - 开放/封闭、未绑定/构造

    NET 泛型术语有点含糊 更糟糕的是 它似乎在不同的来源中被模糊且不同地使用 基本上不清楚的是这 4 个术语之间的关系 与 类型 相关 open closed unbound 建 我明白那个List
  • 每个面有 K 个顶点的 3D 点的三角测量

    我正在使用 Three js 我有一个收藏3D点 x y z 和面的集合 一张脸是由K points 它可以是凸的 也可以是凹的 我在 Three js 文档中找不到任何可以帮助我的内容 一种解决方案可能是对这些形状进行三角测量 但到目前为
  • 如何在 swift 中检查两个实例是否具有相同的类/类型

    我知道我可以检查 Swift 中 var 的类型is if item is Movie movieCount 1 else if item is Song songCount 1 但我如何检查两个实例是否具有相同的类 以下不起作用 if i
  • Atlas 上的 Mongoose 与 ReplicaSet

    我在 MongoDB Atlas 上有一个副本集 这是我的 mongo shell 连接字符串 可以完美连接 mongo mongodb MY SERVER shard 00 00 clv3h mongodb net 27017 MY SE