环回API连接到MongoDB Atlas

时间:2019-06-12 22:42:29

标签: node.js mongodb api loopbackjs

我使用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 个答案:

答案 0 :(得分:0)

您是否正在使用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://代替。根据{{​​3}},在版本3.6中添加了mongodb+srv,以简化用于连接到MongoDB服务器集群的种子列表的配置。根据该帖子,应该可以将包含单个主机的mongodb+srv:// URL替换为包含多个主机的mongodb:// URL。