Created
September 10, 2018 20:42
-
-
Save vilindberg/361a57f42fc005dcb36c72cab6e65ea7 to your computer and use it in GitHub Desktop.
MongoDB connection dependency injection
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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