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