Сейчас все приложение в одном файле, но он сильно разросся, решил разбить его на куски.
Вот что получается:
index.js// BASE SETUP
// =============================================================================
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const db = require('./app/db');
// configure app to use bodyParser()
// this will let us get the data from a POST
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(express.static('public'));
app.use(cors());
app.set('port', (process.env.PORT || 3000));
// ROUTES FOR OUR API
// =============================================================================
/*const router = express.Router(); // get an instance of the express Router*/
const router = require('./app/router'); // get an instance of the express Router
app.use('/', router);
// Connect to Mongo on start
db.connect(mlabUrl, function(err) {
if (err) {
console.log('Unable to connect to Mongo.')
process.exit(1)
} else {
app.listen(app.get('port'), function () {
console.log('Node app is running on port', app.get('port'));
});
}
});
db.jslet MongoClient = require('mongodb').MongoClient;
let state = {
db: null,
};
exports.connect = function (url, callback) {
if (state.db) {
return callback();
}
MongoClient.connect(url, function (err, db) {
if (err) {
return callback(err);
}
state.db = db;
callback();
});
}
exports.get = function () {
return state.db;
};
exports.close = function (callback) {
if(state.db) {
state.db.close(function(err, res) {
state.db = null;
state.mode = null;
callback(err);
})
}
};
router.jsconst express = require('express');
const router = express.Router();
const ObjectID = require('mongodb').ObjectID;
let db = require('./db');
router.get('/items', (req, res) => {
db.collection('items').find().toArray((err, results) => {
res.send(results);
});
});
...и тут много роутов
Хотел разбить роуты по файлам а коннект к базе сделать при запуске приложения, но что-то идет не так - получаю 500 'TypeError: db.collection is not a function'