首页 > 解决方案 > 环回 API 连接到 MongoDB Atlas

问题描述

我使用 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!

标签: node.jsmongodbapiloopbackjs

解决方案


你用的是最新版的loopback-connector-mongodb吗?

错误消息表明连接器(或底层 MongoDB 客户端库)无法解析url. mongodb+srv://您使用的版本可能不支持该架构?

据我所知,mongodb+srv://最近(2019 年 4 月)添加了对 URL 的支持,请参阅拉取请求https://github.com/strongloop/loopback-connector-mongodb/pull/497。该更改于 5 月作为loopback-connector-mongodb@4.2.0. 请升级您的项目以使用最新的连接器版本。

或者,您可以尝试mongodb://改用。根据这篇 MongoDB 博客文章mongodb+srv在 3.6 版中添加了用于简化用于连接到 MongoDB 服务器集群的种子列表的配置。根据帖子,应该可以将mongodb+srv://包含单个主机的 mongodb://URL 替换为包含多个主机的 URL。


推荐阅读