环回 API 连接到 MongoDB Atlas
Posted
技术标签:
【中文标题】环回 API 连接到 MongoDB Atlas【英文标题】:Loopback API Connection to MongoDB Atlas 【发布时间】:2019-10-27 12:02:12 【问题描述】:我使用 Loopback 创建了一个 API,并让它在 LocalHost 上的 MongoDB 上运行良好。我现在正在尝试将其切换为使用 MongoDB Atlas(在线)。
我运行lb datasource
并填写了所有内容,现在这是我的datasources.json
文件:
"db":
"host": "fishapi-cxtvd.mongodb.net",
"port": 0,
"url": "mongodb+srv://admin:********@fishapi-cxtvd.mongodb.net/test?retryWrites=true&w=majority",
"database": "admin",
"password": "********",
"name": "MyMongoDB",
"user": "admin",
"useNewUrlParser": true,
"connector": "mongodb"
我也尝试过重新格式化它(如另一个堆栈溢出问题中所建议的那样),所以它看起来像这样:
"db":
"url": "mongodb+srv://admin:********@fishapi-cxtvd.mongodb.net/test?retryWrites=true&w=majority",
"name": "FishAPI",
"connector": "mongodb"
这是我在运行时收到的错误:
MongoParseError: Cannot create data source "db": Cannot initialize connector "mongodb": URI does not have hostname, domain name and tld
是否有人对我需要更改哪些内容以使其正确连接有任何建议?感谢任何帮助,因为这是我第一次使用 Loopback 和 MongoDB!
【问题讨论】:
【参考方案1】:您使用的是最新版本的loopback-connector-mongodb
吗?
错误消息表明连接器(或底层 MongoDB 客户端库)无法解析 url
。也许您使用的版本不支持架构mongodb+srv://
?
据我所知,对 mongodb+srv://
URL 的支持是最近才添加的(2019 年 4 月),请参阅拉取请求 https://github.com/strongloop/loopback-connector-mongodb/pull/497。该更改于 5 月作为 loopback-connector-mongodb@4.2.0
的一部分发布。请升级您的项目以使用最新的连接器版本。
或者,您可以尝试改用mongodb://
。根据this MongoDB blog post 的说法,mongodb+srv
是在 3.6 版中添加的,以简化用于连接到 MongoDB 服务器集群的种子列表的配置。根据帖子,应该可以将包含单个主机的mongodb+srv://
URL 替换为包含多个主机的mongodb://
URL。
【讨论】:
感谢您的回复。我最终通过将名称参数更改为 db (默认环回名称参数)解决了我的问题。为了让其他看到这里的人更清楚,我使用了重新格式化的版本,只有名称、url 和连接器参数。以上是关于环回 API 连接到 MongoDB Atlas的主要内容,如果未能解决你的问题,请参考以下文章
Docker compose api无法连接到主机MongoDB数据库
使用 Nodejs Restful API 将 android 应用程序连接到本地 mongoDB 数据库并将数据存储在 Mongodb 中(通过 WiFi)
使用 ngrok 创建隧道以连接到 MongoDB 本地数据库