UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

82 lines (69 loc) 3.5 kB
// tslint:disable:no-console no-magic-numbers no-null-keyword import * as mongoose from 'mongoose'; const MONGOLAB_URI = String(process.env.MONGOLAB_URI); interface IConnectionByAppName { connection: mongoose.Connection; isReady: boolean; } const uniqueConnections: Record<string, IConnectionByAppName> = {}; export async function getUniqueConnectionByAppName(params: { appName: string }): Promise<mongoose.Connection> { const { appName } = params; if (uniqueConnections[appName] === undefined) { uniqueConnections[appName] = { connection: mongoose.createConnection(MONGOLAB_URI, { appName }), isReady: false }; uniqueConnections[appName].connection.on('connected', () => console.log('connected')); uniqueConnections[appName].connection.on('open', () => console.log('open')); uniqueConnections[appName].connection.on('disconnected', () => console.log('disconnected')); uniqueConnections[appName].connection.on('reconnected', () => console.log('reconnected')); uniqueConnections[appName].connection.on('disconnecting', () => console.log('disconnecting')); uniqueConnections[appName].connection.on('close', () => console.log('close')); } const conectionByAppName = uniqueConnections[appName]; if (!conectionByAppName.isReady) { console.log('connecting(asPromise)...'); await conectionByAppName.connection.asPromise(); conectionByAppName.isReady = true; } else { console.log('is ready.'); } return conectionByAppName.connection; } async function main() { console.log(mongoose.connections.length, 'mongoose.connections found'); mongoose.connection.on('connected', () => console.log('connected')); mongoose.connection.on('open', () => console.log('open')); mongoose.connection.on('disconnected', () => console.log('disconnected')); mongoose.connection.on('reconnected', () => console.log('reconnected')); mongoose.connection.on('disconnecting', () => console.log('disconnecting')); mongoose.connection.on('close', () => console.log('close')); // await mongoose.connect(MONGOLAB_URI); // const firstConnection = mongoose.createConnection(<string>process.env.MONGOLAB_URI); // firstConnection.on('connected', () => console.log('connected')); // firstConnection.on('open', () => console.log('open')); // firstConnection.on('disconnected', () => console.log('disconnected')); // firstConnection.on('reconnected', () => console.log('reconnected')); // firstConnection.on('disconnecting', () => console.log('disconnecting')); // firstConnection.on('close', () => console.log('close')); // tslint:disable-next-line:prefer-array-literal [...Array(10)].map(async (__, i) => { getUniqueConnectionByAppName({ appName: 'xxx' }) .then(async (connectResult) => { console.log('connected:', connectResult.id, i); await getUniqueConnectionByAppName({ appName: 'xxx' }); }); }); console.log(mongoose.connections.length, 'mongoose.connections found'); // db.currentOp(true) // .inprog.forEach((op) => { // if (op.active = true && op.client != undefined) { // const miniOp = { // client: op.client, description: op.desc // }; // console.log(miniOp); // } // }); } main() .catch(console.error);