环回 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的主要内容,如果未能解决你的问题,请参考以下文章

连接到 api nodeJS 和 mongoDB

Docker compose api无法连接到主机MongoDB数据库

使用 Nodejs Restful API 将 android 应用程序连接到本地 mongoDB 数据库并将数据存储在 Mongodb 中(通过 WiFi)

使用 ngrok 创建隧道以连接到 MongoDB 本地数据库

部署到Heroku后,Localhost未连接到mongodb

在节点 js 中使用 mongoose 连接到 MongoDB 后未显示数据