NodeJS-соединение MongoDB с UNIX-сокетом - PullRequest
0 голосов
/ 24 сентября 2018

В приложении nodeJS я бы хотел подключиться к моей базе данных MongoDB через сокет UNIX /tmp/mongdb-27017.sock.Я использую пакет 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: не удалось подключиться к серверу [/tmp/mongodb-27017.sock:27017] при первом подключении [MongoNetworkError: подключиться ECONNREFUSED /tmp/mongodb-27017.sock]

Кто-нибудь знает, возможно ли подключиться к mongoDB UNIX-сокету из nodeJS , и есть ли что-то конкретное, что можно сделать?Не удалось найти конкретную информацию в документе.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Для меня решение было , а не , чтобы избежать пути, в отличие от документации на docs.mongodb.com .Поэтому попробуйте

mongodb: ///tmp/mongodb-27017.sock

вместо

mongodb: //% 2Ftmp%2Fmongodb-27017.sock

И, конечно, убедитесь, что файл сокета существует:

$ ls -al /tmp/mongodb-27017.sock
srwxrwxrwx 1mongodb mongodb 0 апреля 1 21:47 /tmp/mongodb-27017.sock

Более полный пример использования учетной записи пользователя из другой базы данных, а не той, к которой мы подключаемся:

mongodb: // foo: pass@/tmp/mongodb-27017.sock/somedb? AuthSource = admin

Здесь устанавливается соединение с базой данных somedb пользователем foo , который является учетной записью пользователя, хранящейся в базе данных admin .

0 голосов
/ 25 сентября 2018

Это возможно при использовании полных путей к сокетам домена Unix вместо имени хоста, на котором mongod должен прослушивать клиентские соединения.Это началось в Монго 3.6

...