mirror of
https://github.com/wassname/talk.git
synced 2026-06-29 17:38:00 +08:00
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
const {
|
|
MONGO_URL,
|
|
WEBPACK,
|
|
CREATE_MONGO_INDEXES,
|
|
LOGGING_LEVEL,
|
|
} = require('../config');
|
|
const { logger } = require('./logging');
|
|
const mongoose = require('mongoose');
|
|
|
|
// Provide a newly wrapped debugQuery function which wraps the `debug` package.
|
|
function debugQuery(name, operation, ...args) {
|
|
logger.debug(
|
|
{
|
|
query: `db.${name}.${operation}(${args
|
|
.map(arg => JSON.stringify(arg))
|
|
.join(', ')})`,
|
|
},
|
|
'mongodb query'
|
|
);
|
|
}
|
|
|
|
// Use native promises
|
|
mongoose.Promise = global.Promise;
|
|
|
|
// Check if verbose logging is enabled.
|
|
if (['debug', 'trace'].includes(LOGGING_LEVEL)) {
|
|
// Enable the mongoose debugger, here we wrap the similar print function
|
|
// provided by setting the debug parameter.
|
|
mongoose.set('debug', debugQuery);
|
|
}
|
|
|
|
if (WEBPACK) {
|
|
logger.debug('Not connecting to mongodb during webpack build');
|
|
|
|
// @wyattjoh: We didn't call connect, but because we include mongoose, it will
|
|
// hold the socket ready, preventing node from exiting. Calling disconnect
|
|
// here just ensures that the application can quit correctly.
|
|
mongoose.disconnect();
|
|
} else {
|
|
mongoose.connection.on('connected', () => logger.debug('mongodb connected'));
|
|
mongoose.connection.on('disconnected', () =>
|
|
logger.debug('mongodb disconnected')
|
|
);
|
|
|
|
// Connect to the Mongo instance.
|
|
mongoose
|
|
.connect(MONGO_URL, {
|
|
useMongoClient: true,
|
|
config: {
|
|
autoIndex: CREATE_MONGO_INDEXES,
|
|
},
|
|
})
|
|
.catch(err => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
module.exports = mongoose;
|
|
|
|
// Here we include all the models that mongoose is used for, this ensures that
|
|
// when we import mongoose that we also start up all the indexing operations
|
|
// here. No point also in importing this if we're not actually doing any
|
|
// indexing now.
|
|
if (CREATE_MONGO_INDEXES) {
|
|
require('../models/action');
|
|
require('../models/asset');
|
|
require('../models/comment');
|
|
require('../models/migration');
|
|
require('../models/setting');
|
|
require('../models/user');
|
|
require('./migration');
|
|
}
|