Files
freeplanet_serverside/src/server/db/mongoose.js

84 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-03-04 20:20:26 +01:00
var mongoose = require('mongoose').set('debug', process.env.VITE_DEBUG);
2018-12-24 20:31:02 +01:00
2025-03-04 20:20:26 +01:00
// Configurazione globale di Mongoose
2018-12-24 20:31:02 +01:00
mongoose.Promise = global.Promise;
2019-02-06 18:48:32 +01:00
mongoose.level = "";
2022-09-14 11:32:04 +02:00
mongoose.set('debug', false);
mongoose.set('strictQuery', false);
2019-02-06 18:48:32 +01:00
2025-03-04 20:20:26 +01:00
// Opzioni di connessione
2023-12-07 11:28:01 +01:00
let options = {
2025-03-04 20:20:26 +01:00
maxPoolSize: 5,
// useNewUrlParser: true,
// useUnifiedTopology: true,
2025-03-04 20:20:26 +01:00
serverSelectionTimeoutMS: 20000, // Timeout di 30 secondi per la selezione del server
2019-02-08 17:11:33 +01:00
};
2025-03-04 20:20:26 +01:00
// Controllo dell'autenticazione
console.log('process.env.AUTH_MONGODB', process.env.AUTH_MONGODB);
2025-03-04 20:20:26 +01:00
const username = encodeURIComponent(process.env.MONGODB_USER);
const password = encodeURIComponent(process.env.MONGODB_PWD);
2023-12-07 11:28:01 +01:00
if (process.env.AUTH_MONGODB === '1') {
2025-03-04 20:20:26 +01:00
options.auth = {
authSource: "admin",
2025-03-04 20:20:26 +01:00
username,
password
};
}
2019-02-08 17:11:33 +01:00
2025-03-04 20:20:26 +01:00
if (options.auth && options.auth.username) {
console.log('MongoDb con Authenticazione:', options.auth.username, '******');
2023-12-07 11:28:01 +01:00
} else {
console.log('### MongoDb SENZA Authenticazione !!! ');
}
2025-03-04 20:20:26 +01:00
// Stampa delle informazioni di sistema
console.log('Node Version ' + process.version);
console.log('Mongoose Version ' + mongoose.version);
2025-03-04 20:20:26 +01:00
// URL di connessione
const connectionUrl = process.env.MONGODB_URI;
console.log('Connessione a ' + connectionUrl + ' in corso...');
2025-03-04 20:20:26 +01:00
// Funzione per connettersi al database con retry
async function connectToDatabase(uri, opts) {
let isConnected = false;
2025-03-04 20:20:26 +01:00
while (!isConnected) {
try {
console.log("Sto provando a connettermi al database...");
await mongoose.connect(uri);
2025-03-04 20:20:26 +01:00
console.log(' *** CONNESSIONE EFFETTUATA ! ' + uri + ' db: ' + process.env.DATABASE);
console.log(' Database corrente:', mongoose.connection.name);
// Ottieni l'URL completo della connessione
console.log(' URL di connessione:', mongoose.connection.client.s.url);
const db = mongoose.connection;
const serverInfo = await db.db.admin().serverStatus(); // Ottieni lo stato del server
console.log(` Versione di MongoDB: ${serverInfo.version}`); // Stampa la versione
isConnected = true; // Imposta la flag di connessione a true
} catch (error) {
console.error(" Errore durante la connessione al database:", error.message);
2025-03-06 18:03:23 +01:00
// if (error.name === 'MongooseServerSelectionError' || error.name === 'MongoServerError') {
console.log(" Ritento la connessione tra 1 minuto...");
await new Promise((resolve) => setTimeout(resolve, 60000)); // Attendi 1 minuto prima di ritentare
/*} else {
2025-03-04 20:20:26 +01:00
console.error(" Errore irreversibile. Arresto il processo.");
await new Promise((resolve) => setTimeout(resolve, 10000)); // Attendi 1 minuto prima di ritentare
process.exit(1); // Termina il processo in caso di errore irreversibile
2025-03-06 18:03:23 +01:00
}*/
2025-03-04 20:20:26 +01:00
}
}
}
2018-12-24 20:31:02 +01:00
2025-03-04 20:20:26 +01:00
// Esporta Mongoose
module.exports = { mongoose, connectToDatabase, connectionUrl, options };