@Klucva

Node.js mongodb почему не работает connectionClosed?

Я хочу сделать, чтобы при отключении от базы данных была ошибка, но event connectionClosed не работает
const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
(async()=>{
	global.mongodb = new MongoClient(`mongodb://${global.config.mongodb.user}:${global.config.mongodb.password}@${global.config.mongodb.ip}:${global.config.mongodb.port}/`);
	global.mongodb.on("connectionClosed", event => {
		console.log(`mongodb connectionClosed: ${event}`);
		throw new Error("mongodb disconnected");
	});
	await global.mongodb.connect();
	console.log('Connected to mongodb');
})();

Пишет 'Connected to mongodb', но когда я вручную перезапускаю сервер, чтобы проверить, ничего не происходит и все последующие запросы просто превращаются в бесконечный Promise { <pending> }
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
@fbi_agent26
это же элементарно
вариант с кодом который закрывает соединение правильно
const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
(async()=>{
	global.mongodb = new MongoClient(`mongodb://${global.config.mongodb.user}:${global.config.mongodb.password}@${global.config.mongodb.ip}:${global.config.mongodb.port}/`);
	global.mongodb.on("close", () => {
		console.log(`mongodb connection closed`);
		throw new Error("mongodb disconnected");
	});
	await global.mongodb.connect();
	console.log('Connected to mongodb');
})();

А еще лучше использовать пул соединений ( если этот код постоянно что то делает в базе , если 1 раз в день то пул не актуален )
const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
(async()=>{
	global.mongodb = await MongoClient.connect(`mongodb://${global.config.mongodb.user}:${global.config.mongodb.password}@${global.config.mongodb.ip}:${global.config.mongodb.port}/`, { useUnifiedTopology: true });
	global.mongodb.on("close", () => {
		console.log(`mongodb connection closed`);
		throw new Error("mongodb disconnected");
	});
	console.log('Connected to mongodb');
})();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы