Skip to content

Instantly share code, notes, and snippets.

@vilindberg
Created September 10, 2018 20:42
Show Gist options
  • Select an option

  • Save vilindberg/361a57f42fc005dcb36c72cab6e65ea7 to your computer and use it in GitHub Desktop.

Select an option

Save vilindberg/361a57f42fc005dcb36c72cab6e65ea7 to your computer and use it in GitHub Desktop.
MongoDB connection dependency injection
import { json } from 'body-parser'
import * as express from 'express'
import { Db, MongoClient } from 'mongodb'
const uri = `mongodb://username:password@random-mongo-server:port/db-name`
const connection: MongoClient = new MongoClient(uri, { useNewUrlParser: true })
const db = {
connect: async () => {
const _connection = await connection.connect()
return _connection.db()
},
disconnect: () => connection.close()
}
const createRandomRouter = (db: Db) => {
const randomRouter = express.Router()
randomRouter.get('/', (req, res) => {
db.collection('random-collection')
.find()
.toArray((_, data) => res.json(data))
})
return randomRouter
}
const routes = (app, db) => {
app.use('/random', createRandomRouter(db))
return app
}
const port = 1337
const app = express()
app.use(json())
db.connect().then((db: Db) => {
routes(app, db).listen(port, () => console.log(`Listening to port: ${port}`))
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment