mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-22 12:20:34 +00:00

Co-authored-by: Mufei <327958099@qq.com> Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
import mongoose from './index';
|
|
|
|
/**
|
|
* connect MongoDB and init data
|
|
*/
|
|
export async function connectMongo({
|
|
beforeHook,
|
|
afterHook
|
|
}: {
|
|
beforeHook?: () => any;
|
|
afterHook?: () => any;
|
|
}): Promise<void> {
|
|
if (global.mongodb) {
|
|
return;
|
|
}
|
|
global.mongodb = mongoose;
|
|
|
|
beforeHook && (await beforeHook());
|
|
|
|
console.log('mongo start connect');
|
|
try {
|
|
mongoose.set('strictQuery', true);
|
|
const maxConnecting = Math.max(30, Number(process.env.DB_MAX_LINK || 20));
|
|
await mongoose.connect(process.env.MONGODB_URI as string, {
|
|
bufferCommands: true,
|
|
maxConnecting: maxConnecting,
|
|
maxPoolSize: maxConnecting,
|
|
minPoolSize: 20,
|
|
connectTimeoutMS: 60000,
|
|
waitQueueTimeoutMS: 60000,
|
|
socketTimeoutMS: 60000,
|
|
maxIdleTimeMS: 300000,
|
|
retryWrites: true,
|
|
retryReads: true
|
|
});
|
|
|
|
mongoose.connection.on('error', (error) => {
|
|
console.log('mongo error', error);
|
|
global.mongodb?.disconnect();
|
|
global.mongodb = undefined;
|
|
});
|
|
|
|
console.log('mongo connected');
|
|
|
|
afterHook && (await afterHook());
|
|
} catch (error) {
|
|
global.mongodb.disconnect();
|
|
console.log('error->', 'mongo connect error', error);
|
|
global.mongodb = undefined;
|
|
}
|
|
}
|