NodeJS MongoDB UNIX套接字连接

时间:2018-09-24 19:39:19

标签: node.js mongodb unix-socket

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套接字,是否有特定的工作要做?在文档中找不到特定信息。

2 个答案:

答案 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