Я новичок в Node и MongoDB, поэтому, пожалуйста, прости меня, если я звучу слишком наивно.
У меня есть класс БД, который создает соединение с MongoDB
db.service.js
const mongoose = require("mongoose");
const fs = require("fs");
const dbConfigs = JSON.parse(fs.readFileSync("/configs.json"));
const dbHost = dbConfigs.DB_HOST;
const dbName = dbConfigs.DB_NAME;
const dbPort = dbConfigs.DB_PORT;
const dbUrl = "mongodb://" + dbHost + ":" + dbPort + "/" + dbName;
const dbOptions = {
useNewUrlParser: true
};
let dbConnection = mongoose.createConnection(dbUrl, dbOptions);
exports.getConnection = () => {
if (dbConnection)
return dbConnection;
}
exports.closeConnection = () => {
if (dbConnection)
return dbConnection.close();
}
Далее у меня есть другой модуль, который создает схему для MongoDB
schema.js
const connection = require("./db.service").getConnection();
const Schema = require("mongoose").Schema;
const SampleSchema = new Schema({...})
exports.Sample = connection.model("Sample", SampleSchema);
Тогда у меня есть другой модуль, который использует эту схему для сохранения объектов
logger.js
const Sample = require("./schema").Sample;
exports.log = () => {
let body = {....};
let sampleObj = new Sample(body);
return sampleObj.save(sampleObj);
Основной модуль
Main.js
const logger = require("./logger");
for (let i=0; i < 100; i++) {
logger.log();
}
Когда я запускаю node Main.js
, все сохраняется, но когда я проверяю MongoDB с помощью команды db.serverStatus.connections
, я вижу 6 открытых соединений.
Я не знаю, как там дела. Я знаю, что команда mongo
сама поддерживает соединение открытым, но откуда поступают остальные 5 соединений?
Я проверил это , что, по-видимому, говорит о том, что Mongoose открывает 5 соединений для приложения, но мое приложение запускает только одну транзакцию, где тогда нужно открывать 5 соединений? Разве это не может быть сделано только с одним?