- Sistemato RefreshToken - Integrato modifiche di PiuCheBuono - Aggiornato a Node 22 - Aggiornato Server a Mongodb 8.0.
84 lines
2.8 KiB
JavaScript
Executable File
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 }; |