jpm*_*yob 6 mongodb node.js loopbackjs
看起来大约有 5 个这样的问题,都没有答案,也许已经完成的人会有一些时间来分享一个解决方案。
我有一个在本地运行的环回 API 应用程序,它可以在本地很好地连接到 mongoDB - 我已经安装了“loopback-connector-mongodb”:“^3.3.1”,并且如上所述 - 一切正常
所以这是我经历的进展(因为我不确定正在使用哪个驱动程序,我尝试了两种语法,syntaxi?syntaxes?)
本地连接有效
"loopback-test": {
"connector": "mongodb",
"name": "loopback-test",
"host": "localhost",
"port": 27017,
"url": "",
"database": "test",
"user": "",
"password": "",
}
Run Code Online (Sandbox Code Playgroud)
我第一次尝试连接到 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": ""
}
Run Code Online (Sandbox Code Playgroud)
结果:Web 服务器侦听:http://localhost:3000 在http://localhost:3000/explorer浏览您的 REST API
c:\loopback-test\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": ""
}
Run Code Online (Sandbox Code Playgroud)
导致:错误:无法创建数据源“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"
}
Run Code Online (Sandbox Code Playgroud)
仍然导致:错误:无法创建数据源“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"
}
Run Code Online (Sandbox Code Playgroud)
结果还是:
Web 服务器侦听:http://localhost:3000 在http://localhost:3000/explorer浏览您的 REST API 连接失败:MongoError:没有可用的 mongos 代理 它将为下一个请求重试。
c:\loopback-test\node_modules\mongodb\lib\mongo_client.js:421 throw err ^ 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": ""
}
Run Code Online (Sandbox Code Playgroud)
Web 服务器侦听:http://localhost:3000 在http://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"
}
Run Code Online (Sandbox Code Playgroud)
这个对我有用:
"db": {
"port": 27017,
"url": "mongodb+srv://user:password@cluster0-xxxxx.mongodb.net",
"database": "collectionName",
"name": "mongodb",
"connector": "mongodb"
},
Run Code Online (Sandbox Code Playgroud)
小智 1
需要澄清的是,该问题是由于MongoDB 连接字符串 URI被插入到主机参数而不是 url 参数中引起的。
host 参数应该只接受 MongoDB 服务器地址,可以是主机名、IP 地址或 UNIX 域套接字。
您可以在Loopback/MongoDB 连接属性上找到有关参数的更多信息。
| 归档时间: |
|
| 查看次数: |
3438 次 |
| 最近记录: |