Verified solution based on the accepted answer:
mongodbutil.js:
var MongoClient = require( 'mongodb' ).MongoClient; var _db; module.exports = { connectToServer: function( callback ) { MongoClient.connect( "<connection string>", function( err, client ) { _db = client.db("<collection name>"); return callback( err ); } ); }, getDb: function() { return _db; } };
app.js:
var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); var mongodbutil = require( './mongodbutil' ); mongodbutil.connectToServer( function( err ) { //app goes online once this callback occurs var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); var companiesRouter = require('./routes/companies'); var activitiesRouter = require('./routes/activities'); var registerRouter = require('./routes/register'); app.use('/', indexRouter); app.use('/users', usersRouter); app.use('/companies', companiesRouter); app.use('/activities', activitiesRouter); app.use('/register', registerRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; res.status(err.status || 500); res.render('error'); }); //end of calback }); module.exports = app;
activity .js - route:
var express = require('express'); var router = express.Router(); var mongodbutil = require( '../mongodbutil' ); var db = mongodbutil.getDb(); router.get('/', (req, res, next) => { db.collection('activities').find().toArray((err, results) => { if (err) return console.log(err) res.render('activities', {activities: results, title: "Activities"}) }); }); router.post('/', (req, res) => { db.collection('activities').save(req.body, (err, result) => { if (err) return console.log(err) res.redirect('/activities') }) }); module.exports = router;
steve May 30 '18 at 10:49 2018-05-30 10:49
source share