连接到MongoDB Atlas的Loopback API失败

时间:2018-01-03 21:21:31

标签: node.js mongodb loopbackjs

看起来有大约5种类型的问题,都没有答案,也许有人完成它会有时间分享解决方案。

我有一个本地运行的环回API应用程序,它在本地连接到mongoDB - 我已经安装了“loopback-connector-mongodb”:“^ 3.3.1”,如上所述 - 一切正常

所以这是我通过的进展(因为我不确定使用哪个驱动程序我尝试了语法,语法?语法?)

本地连接有效

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "localhost",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "",
    "password": "",
}

我第一次尝试连接到ALAS。 这看起来很有效,但是在反馈之后就错了。

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "mongodb://adminUser:pwd@cluster0-shard-00-00-xxx.mongodb.net:27017,cluster0-shard-00-01-xxx.mongodb.net:27017,cluster0-shard-00-02-xxx.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "",
    "password": ""
}

导致: 网络服务器收听:http://localhost:3000http://localhost:3000/explorer

浏览您的REST API

C:\环回测试\ node_modules \ mongodb的\ lib中\ replset.js:345       process.nextTick(function(){throw err;})                                     ^ MongoError:数据库名称不能包含字符'/'

我认为它不喜欢'/ test ...',所以我把它删除了

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "mongodb://adminUser:pwd@cluster0-shard-00-00-xxx.mongodb.net:27017,cluster0-shard-00-01-xxx.mongodb.net:27017,cluster0-shard-00-02-xxx.mongodb.net:27017",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "",
    "password": ""
}

导致: 错误:无法创建数据源“loopback-test”:无法初始化连接器“mongodb”:主机标识符中的双冒号

    "loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "cluster0-shard-00-00-xxx.mongodb.net:27017,cluster0-shard-00-01-xxx.mongodb.net:27017,cluster0-shard-00-02-xxx.mongodb.net:27017",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "adminUser",
    "password": "pwd"
}

仍然导致: 错误:无法创建数据源“loopback-test”:无法初始化连接器“mongodb”:主机标识符中的双冒号

所以现在我开始认为我使用3.6驱动程序,但我想再试一次 而且我几乎以为我拥有它 - 因为它在“浏览你的REST API ...”消息后花了几秒钟,因为错误弹出......但确实如此。

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "cluster0-shard-00-00-xxx.mongodb.net,cluster0-shard-00-01-xxx.mongodb.net,cluster0-shard-00-02-xxx.mongodb.net",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "adminUser",
    "password": "pwd"
}

仍然导致:

Web服务器收听:http://localhost:3000http://localhost:3000/explorer浏览您的REST API 连接失败:MongoError:没有可用的mongos代理 它将在下一次请求时重试。

C:\环回测试\ node_modules \ mongodb的\ lib中\ mongo_client.js:421           扔错了           ^ MongoError:没有可用的mongos代理

所以现在IM进入3.6驱动程序语法

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "mongodb+srv://adminUser:pwd@cluster0-xxx.mongodb.net",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "",
    "password": ""
}

Web服务器收听:http://localhost:3000http://localhost:3000/explorer浏览您的REST API 连接失败:MongoError:第一次连接时无法连接到服务器[cluster0-xxx.mongodb.net:27017] [MongoError:getaddrinfo ENOTFOUND cluster0-xxx.mongodb.net cluster0-xxx.mongodb.net:27017] 它将在下一次请求时重试。

最后 - 我试过

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "host": "cluster0-xxx.mongodb.net",
    "port": 27017,
    "url": "",
    "database": "test",
    "user": "adminUser",
    "password": "pwd"
}

3 个答案:

答案 0 :(得分:2)

这个对我有用:

 "db": {
    "port": 27017,
    "url": "mongodb+srv://user:password@cluster0-xxxxx.mongodb.net",
    "database": "collectionName",
    "name": "mongodb",
    "connector": "mongodb"
  },

答案 1 :(得分:1)

好吧,希望我没有浪费任何时间,因为我一直在照顾我发布的问题......我搜索了连接器的文档 - 不知道为什么我之前没有......但是使用URL参数并将连接字符串作为URL传递并绕过其他参数,工作得很好。

"loopback-test": {
    "connector": "mongodb",
    "name": "loopback-test",
    "url": "mongodb://adminUser:pwd@cluster0-shard-00-00-xxx.mongodb.net:27017,cluster0-shard-00-01-xxx.mongodb.net:27017,cluster0-shard-00-02-xxx.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin"
}

我希望这可以帮助其他人在database.json参数上敲击他们。

欢呼 - 并且一如既往 - 感谢您的帮助。

答案 2 :(得分:1)

为了澄清,问题是由https://jsfiddle.net/gkotxdt7/插入主机参数而不是url参数引起的。

host参数应该只接受MongoDB服务器地址,该地址可以是主机名,IP地址或UNIX域套接字。

您可以在MongoDB Connection String URI上找到有关参数的更多信息。