Files
freeplanet_serverside/src/server/db/mongoose.js
Surya Paolo 4758ce0857 - COMPLETAMENTO PASSAGGIO A VITE - versione 1.2.2:
- Sistemato RefreshToken
  - Integrato modifiche di PiuCheBuono
  - Aggiornato a Node 22
  - Aggiornato Server a Mongodb 8.0.
2025-03-10 17:20:57 +01:00

84 lines
2.8 KiB
JavaScript
Executable File

var mongoose = require('mongoose').set('debug', process.env.VITE_DEBUG);
// Configurazione globale di Mongoose
mongoose.Promise = global.Promise;
mongoose.level = "";
mongoose.set('debug', false);
mongoose.set('strictQuery', false);
// Opzioni di connessione
let options = {
maxPoolSize: 5,
// useNewUrlParser: true,
// useUnifiedTopology: true,
serverSelectionTimeoutMS: 20000, // Timeout di 30 secondi per la selezione del server
};
// Controllo dell'autenticazione
console.log('process.env.AUTH_MONGODB', process.env.AUTH_MONGODB);
const username = encodeURIComponent(process.env.MONGODB_USER);
const password = encodeURIComponent(process.env.MONGODB_PWD);
if (process.env.AUTH_MONGODB === '1') {
options.auth = {
authSource: "admin",
username,
password
};
}
if (options.auth && options.auth.username) {
console.log('MongoDb con Authenticazione:', options.auth.username, '******');
} else {
console.log('### MongoDb SENZA Authenticazione !!! ');
}
// Stampa delle informazioni di sistema
console.log('Node Version ' + process.version);
console.log('Mongoose Version ' + mongoose.version);
// URL di connessione
const connectionUrl = process.env.MONGODB_URI;
console.log('Connessione a ' + connectionUrl + ' in corso...');
// Funzione per connettersi al database con retry
async function connectToDatabase(uri, opts) {
let isConnected = false;
while (!isConnected) {
try {
console.log("Sto provando a connettermi al database...");
await mongoose.connect(uri);
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);
// 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 {
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
}*/
}
}
}
// Esporta Mongoose
module.exports = { mongoose, connectToDatabase, connectionUrl, options };