Tengo una aplicación Expressjs ejecutándose en NodeJS 0.8.8 usando MongoDB y el lenguaje de plantilla de Jade, y me gustaría permitir que el usuario configure muchas de las opciones de presentación de todo el sitio como los títulos de página, la imagen del logotipo, etc.¿Cómo puedo almacenar la configuración del sitio en MongoDB para una aplicación NodeJS Express?
¿Cómo puedo almacenar estas opciones de configuración en una base de datos mongoDB para poder leerlas al inicio de la aplicación, manipularlas mientras la aplicación se está ejecutando y mostrarlas en las plantillas de jade?
Aquí está mi configuración general de aplicación:
var app = module.exports = express();
global.app = app;
var DB = require('./accessDB');
var conn = 'mongodb://localhost/dbname';
var db;
// App Config
app.configure(function(){
...
});
db = new DB.startup(conn);
//env specific config
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
}); // etc
// use date manipulation tool moment
app.locals.moment = moment;
// Load the router
require('./routes')(app);
Hasta ahora he creado un modelo llamado "sitio" de la colección "SiteConfig" y tengo una función llamada getSiteConfig en accessDB.js que corre Site.find() ... para recuperar los campos en el documento de la colección.
Así que este es el quid de la cuestión: ¿cómo debo inyectar esos campos en la aplicación express para que puedan ser utilizados en todo el sitio? ¿Debería seguir el mismo patrón que utilicé con la herramienta moment.js? De esta manera:
db.getSiteConfig(function(err, siteConfig){
if (err) {throw err;}
app.locals.siteConfig = siteConfig;
});
Si no, ¿cuál sería la forma correcta de hacerlo?
Gracias!
es esto algo que desea almacenar en la sesión? – c0deNinja
No, no lo creo. No quiero que el cliente tenga acceso a él. Solo quiero que la aplicación express del lado del servidor (especialmente Jade) tenga acceso a ella. Lo tengo funcionando hasta el punto de un console.log. Supongo que debería intentar agregarlo a los directorios de aplicaciones y ver qué sucede, pero no estoy seguro de las implicaciones de seguridad de usarlo. (o la estabilidad del mismo) – tutley