vue-express-mongo-boilerplate
Version:
Express NodeJS application server boilerplate with Mongo and VueJS
74 lines (57 loc) • 1.68 kB
JavaScript
;
let logger = require("./logger");
let config = require("../config");
let chalk = require("chalk");
let mongoose = require("mongoose");
let autoIncrement = require("mongoose-auto-increment");
module.exports = function() {
let db;
logger.info();
mongoose.Promise = global.Promise;
if (mongoose.connection.readyState !== 1) {
logger.info("Connecting to Mongo " + config.db.uri + "...");
db = mongoose.connect(config.db.uri, config.db.options, function mongoAfterConnect(err) {
if (err) {
logger.error("Could not connect to MongoDB!");
return logger.error(err);
}
mongoose.set("debug", config.isDevMode());
});
mongoose.connection.on("error", function mongoConnectionError(err) {
if (err.message.code === "ETIMEDOUT") {
logger.warn("Mongo connection timeout!", err);
setTimeout(() => {
mongoose.connect(config.db.uri, config.db.options);
}, 1000);
return;
}
logger.error("Could not connect to MongoDB!");
return logger.error(err);
});
/*
Maybe change to
https://github.com/icebob/mongoose-autoincrement
*/
autoIncrement.initialize(db);
mongoose.connection.once("open", function mongoAfterOpen() {
logger.info(chalk.yellow.bold("Mongo DB connected."));
logger.info();
if (config.isTestMode()) {
logger.warn("Drop test database...");
//mongoose.connection.db.dropDatabase((err) => {
// autoIncrement.initialize(db);
require("./seed-db")();
//);
}
else {
if (!config.isProduction) {
require("./seed-db")();
}
}
});
} else {
logger.info("Mongo already connected.");
db = mongoose;
}
return db;
};