MongoParseError 连接到无服务器 Atlas DB
Posted
技术标签:
【中文标题】MongoParseError 连接到无服务器 Atlas DB【英文标题】:MongoParseError connecting to serverless Atlas DB 【发布时间】:2021-10-09 23:15:50 【问题描述】:我正在运行 Node/Express/Mongoose 应用程序,当我尝试将其连接到“无服务器”mongodb atlas 数据库时,出现错误
MongoParseError: Text record must only set `authSource` or `replicaSet` at QueryReqWrap.callback (/home/XXX/node_modules/mongoose/node_modules/mongodb/lib/core/uri_parser.js:111:13)
当我对“用户”模型运行查询时,在代码中,我得到了
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:32601) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
当我尝试“免费”常规版本的数据库时,这些都没有显示(显然更改了连接 URI)。
我正在使用 mongoose 5.13.7 和 mongodb 4.1.0。我的连接字符串是“mongodb+srv://user:password@serverlessinstance0.7eg4b.mongodb.net/db?retryWrites=true&w=majority&useMongoClient=true”
有什么提示吗?
【问题讨论】:
集群的TXT记录是什么样的? 它是“authSource=admin&replicaSet=atlas-4qhb1z-shard-0” 这是使用什么版本的 node.js 驱动程序?您必须至少使用 4.1.0 版才能连接到无服务器,请参阅docs.atlas.mongodb.com/reference/… 添加的包和连接字符串信息 【参考方案1】:我尝试使用无服务器实例设置两个服务:1. etherpad 实例,2. strapi 后端。
在这两种方法中,我都陷入了这个确切的错误。使用共享集群,这两件事都很好。 MongoDB 还表示,NodeJS 3.7 驱动程序对无服务器实例的支持即将推出。看来我们只需要等待司机获得支持并耐心等待即可:)
【讨论】:
【参考方案2】:正如在对原始问题的评论中提到的,您应该使用版本至少为 4.1 的节点驱动程序
【讨论】:
以上是关于MongoParseError 连接到无服务器 Atlas DB的主要内容,如果未能解决你的问题,请参考以下文章
嵌套服务器未连接到 MongoDB 云 UnhandledPromiseRejectionWarning: MongoParseError: URI malformed
无法连接到数据库MongoParseError: Unescaped at-sign in authority section
尝试将 mongoDB 连接到我的网络应用程序,但它显示以下错误