在 nodeJS 应用中,我想通过其 UNIX套接字 /tmp/mongdb-27017.sock
连接到我的 MongoDB 数据库。我以这种方式使用软件包https://mongodb.github.io/node-mongodb-native/?jmp=docs(版本3.1.6):
const client = await MongoClient.connect("mongodb://%2Ftmp%2Fmongodb-27017.sock")
此处的文档中引用了URI:https://docs.mongodb.com/manual/reference/connection-string/#unix-domain-socket。但就我而言,它失败并显示以下错误:
MongoNetworkError:首次连接[MongoNetworkError:connect ECONNREFUSED /tmp/mongodb-27017.sock]时,无法连接到服务器[/tmp/mongodb-27017.sock:27017]
有人知道是否可以从 nodeJS 连接到 mongoDB UNIX套接字,是否有特定的工作要做?在文档中找不到特定信息。
答案 0 :(得分:1)
对我来说,解决方案不是 逃脱这条路,这与docs.mongodb.com上的文档相反。所以尝试
mongodb:///tmp/mongodb-27017.sock
代替
mongodb://%2Ftmp%2Fmongodb-27017.sock
当然要确保套接字文件存在:
$ ls -al /tmp/mongodb-27017.sock
srwxrwxrwx 1 mongodb mongodb 0 Apr 1 21:47 /tmp/mongodb-27017.sock
一个更完整的示例,它使用另一个数据库中的用户帐户,然后是我们要连接的数据库:
mongodb:// foo:pass@/tmp/mongodb-27017.sock/somedb?authSource = admin
在这里,用户 foo 与 somedb 数据库建立了连接,该用户是存储在 admin 数据库中的用户帐户。>
答案 1 :(得分:0)
可以使用完整的Unix域套接字路径而不是mongod在其上侦听客户端连接的主机名。它始于Mongo 3.6