@@ -7,7 +7,13 @@ const maxConnecting = Math.max(30, Number(process.env.DB_MAX_LINK || 20));
77/**
88 * connect MongoDB and init data
99 */
10- export async function connectMongo ( db : Mongoose , url : string ) : Promise < Mongoose > {
10+ export async function connectMongo ( props : {
11+ db : Mongoose ;
12+ url : string ;
13+ connectedCb ?: ( ) => void ;
14+ } ) : Promise < Mongoose > {
15+ const { db, url, connectedCb } = props ;
16+
1117 /* Connecting, connected will return */
1218 if ( db . connection . readyState !== 0 ) {
1319 return db ;
@@ -31,7 +37,7 @@ export async function connectMongo(db: Mongoose, url: string): Promise<Mongoose>
3137 RemoveListeners ( ) ;
3238 await db . disconnect ( ) ;
3339 await delay ( 1000 ) ;
34- await connectMongo ( db , url ) ;
40+ await connectMongo ( props ) ;
3541 }
3642 } catch ( error ) { }
3743 } ) ;
@@ -42,7 +48,7 @@ export async function connectMongo(db: Mongoose, url: string): Promise<Mongoose>
4248 RemoveListeners ( ) ;
4349 await db . disconnect ( ) ;
4450 await delay ( 1000 ) ;
45- await connectMongo ( db , url ) ;
51+ await connectMongo ( props ) ;
4652 }
4753 } catch ( error ) { }
4854 } ) ;
@@ -60,16 +66,18 @@ export async function connectMongo(db: Mongoose, url: string): Promise<Mongoose>
6066 retryReads : true
6167 } ;
6268
63- db . connect ( url , options ) ;
64-
69+ await db . connect ( url , options ) ;
6570 console . log ( 'mongo connected' ) ;
71+
72+ connectedCb ?.( ) ;
73+
6674 return db ;
6775 } catch ( error ) {
6876 addLog . error ( 'Mongo connect error' , error ) ;
6977
7078 await db . disconnect ( ) ;
7179
7280 await delay ( 1000 ) ;
73- return connectMongo ( db , url ) ;
81+ return connectMongo ( props ) ;
7482 }
7583}
0 commit comments