@ancxkush/create-ts-express-mongo-starter-code
Version:
NodeJS/Express starter code with - TypeScript, MongoDB setup, Exception Handler, Logger, HTTP testing example, Swagger Docs example, Mongoose model example, JOI validation example, CRUD operations example
49 lines (39 loc) • 1.33 kB
text/typescript
import mongoose from 'mongoose'
import logger from '../middlewares/winstonLogger'
import { MONGO_URI, NODE_ENV } from '../config/env'
import { MongoMemoryServer } from 'mongodb-memory-server'
let mongoMemoryServer: MongoMemoryServer
export async function connectDB() {
try {
let mongoURI: string = MONGO_URI || ''
if (NODE_ENV == 'test') {
mongoMemoryServer = await MongoMemoryServer.create()
mongoURI = mongoMemoryServer.getUri()
}
await mongoose.connect(mongoURI)
} catch (error) {
logger.error('error during inital connection to mongodb database')
process.exit(1)
}
}
mongoose.connection.on('connected', () =>
mongoMemoryServer
? logger.info('using mongo memory server for test environment...')
: logger.info('Mongodb database connected...')
)
mongoose.connection.on('error', (err) => logger.error(err.message))
mongoose.connection.on('disconnected', () =>
logger.warn('Mongodb database disconnected...')
)
export async function disconnectDB() {
try {
await mongoose.connection.close()
mongoMemoryServer && mongoMemoryServer.stop()
} catch (error) {
logger.warn('Error during disconnecting mongodb database')
}
}
process.on('SIGINT', async () => {
logger.warn('Mongodb database disconnected...')
await mongoose.connection.close()
})