我有一个运行在NodeJS 0.8.8上,使用MongoDB和Jade模板语言的Expressjs应用程序,并且我想允许用户配置许多站点宽度的展示选项,例如页面标题、标志图像等。
我该如何将这些配置选项存储在MongoDB数据库中,以便在应用程序启动时读取它们,在应用程序运行时对其进行操作,并在jade模板中显示它们?
以下是我的一般应用程序设置:
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);
到目前为止,我已经为“siteConfig”集合创建了一个名为“Site”的模型,并在accessDB.js中编写了一个名为getSiteConfig的函数,该函数运行Site.find()...以检索集合中一个文档中的字段。
那么这就是问题的关键:我应该如何将这些字段注入到express应用程序中,以便它们可以在整个站点中使用?我应该像使用moment.js工具一样遵循相同的模式吗?像这样:
db.getSiteConfig(function(err, siteConfig){
if (err) {throw err;}
app.locals.siteConfig = siteConfig;
});
如果不行,那正确的做法是什么呢?
谢谢!