#javascript #mongodb #mongoose
Вопрос:
Я пытаюсь уже более 2 часов, пытаясь выяснить, что не так с этой базой данных. Я все перепробовал. От переустановки сервера, перезапуска процессов, перезагрузки и многого другого. Он продолжает выдавать мне эту ошибку при попытке подключения:
const serverSelectionError = new ServerSelectionError();
^
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (D:TheShedMX_node_modulesmongooselibconnection.js:797:32)
at D:TheShedMX_node_modulesmongooselibindex.js:330:10
at D:TheShedMX_node_modulesmongooselibhelperspromiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (D:TheShedMX_node_modulesmongooselibhelperspromiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (D:TheShedMX_node_modulesmongooselibindex.js:1151:10)
at Mongoose.connect (D:TheShedMX_node_modulesmongooselibindex.js:329:20)
at module.exports (D:TheShedMX_otherDBmong.js:4:20)
at D:TheShedMX_app.js:195:37
at Object.<anonymous> (D:TheShedMX_app.js:197:3) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) {
'localhost:27017' => ServerDescription {
_hostAddress: HostAddress { isIPv6: false, host: 'localhost', port: 27017 },
address: 'localhost:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 1421094,
lastWriteDate: 0,
error: MongoNetworkError: connect ECONNREFUSED ::1:27017
at connectionFailureError (D:TheShedMX_node_modulesmongodblibcmapconnect.js:293:20)
at Socket.<anonymous> (D:TheShedMX_node_modulesmongodblibcmapconnect.js:267:22)
at Object.onceWrapper (node:events:510:26)
at Socket.emit (node:events:390:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
Эта ошибка не будет устранена независимо от того, что я делаю. Сервер MongoDB запущен, я проверил, выполнив> показать базы данных, и они перечислены в полном порядке. Кроме того, C:/data/db существует, и это тоже прекрасно.
Что мне делать?
Вот мой код подключения:
(async () => {
await require('./other/DB/mong')();
console.log("Connected to Database.");
})();
и вот ./other/DB/mong:
var mongoose = require("mongoose");
module.exports = async () => {
await mongoose.connect('mongodb://localhost:27017/MX', {
keepAlive: true,
useNewUrlParser: true,
useUnifiedTopology: true
});
return mongoose;
}
Комментарии:
1. Что происходит, когда вы заменяете localhost на 127.0.0.1?
Ответ №1:
MongoDB по умолчанию не привязывается к localhost на ipv6.
Если вы хотите, чтобы он прослушивал ::1, вам нужно будет включить net.ipv6 и либо включить net.bindIpAll, либо явно указать адрес обратной связи в net.bindIp
Комментарии:
1. Спасибо! это помогло мне. Для тех, кто установил mongo через homebrew, вы можете отредактировать конфигурацию с помощью vim, используя: vim /opt/homebrew/etc/mongod.conf
Ответ №2:
Я только что нашел решение в Интернете, если вы используете последнюю версию nodejs (v17.x), попробуйте обновить URL mongodb с localhost
на 127.0.0.1
Это сработало для меня: slightly_smiling_face:
Комментарии:
1. Я тоже! Как странно, я весь день использовал его нормально, начал новый проект и внезапно должен был реализовать это изменение: большое спасибо!
Ответ №3:
Обновил мой URL-адрес mongodb с ‘mongodb: // localhost: 27017 / student’ на ‘mongodb: // 127.0.0.1: 27017 / student’, и у меня все получилось
Ответ №4:
вы также можете использовать mongodb://0.0.0.0:27017/database_name