initialize settings in an init file before app accepts requests

This commit is contained in:
Riley Davis
2016-11-10 13:02:52 -07:00
parent 26f48196d9
commit c698ae78a7
3 changed files with 33 additions and 15 deletions
+19 -15
View File
@@ -13,27 +13,31 @@ process.env.DEBUG = process.env.TALK_DEBUG;
const app = require('../app');
const debug = require('debug')('talk:server');
const http = require('http');
const initPromise = require('../init');
let server;
/**
* Get port from environment and store in Express.
*/
initPromise.then(() => {
/**
* Get port from environment and store in Express.
*/
const port = normalizePort(process.env.TALK_PORT || '3000');
app.set('port', port);
const port = normalizePort(process.env.TALK_PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
/**
* Create HTTP server.
*/
const server = http.createServer(app);
server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
});
/**
* Normalize a port into a number, string, or false.
+6
View File
@@ -0,0 +1,6 @@
const Setting = require('./models/setting');
const defaults = {id: '1', moderation: 'pre'};
module.exports = Setting.init(defaults);
// presumably this file will grow, which is why I've broken it out.
+8
View File
@@ -11,6 +11,14 @@ const SettingSchema = new Schema({
}
});
/**
* this is run once when the app starts to ensure settings are populated
* @return {Promise} null initialize the global settings object
*/
SettingSchema.statics.init = function (defaults) {
return this.update({id: '1'}, {$setOnInsert: defaults}, {upsert: true});
};
/**
* gets the entire settings record and sends it back
* @return {Promise} settings the whole settings record