【发布时间】:2012-09-07 22:46:34
【问题描述】:
我有一个使用 MongoDB 和 Jade 模板语言在 NodeJS 0.8.8 上运行的 Expressjs 应用程序,我希望允许用户配置许多站点范围的演示选项,例如页面标题、徽标图像、等等
如何将这些配置选项存储在 mongoDB 数据库中,以便在应用程序启动时读取它们,在应用程序运行时对其进行操作,并将它们显示在玉模板中?
这是我的一般应用设置:
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;
});
如果不是,那么正确的做法是什么?
谢谢!
【问题讨论】:
-
这是您要存储在会话中的内容吗?
-
不,我不这么认为。我不希望客户可以访问它。我只希望服务器端快速应用程序(尤其是 Jade)能够访问它。我让它工作到了console.log。我想我应该尝试将它添加到 app.locals 并看看会发生什么,但我不确定使用它的安全隐患。 (或它的稳定性)
标签: node.js mongodb express mongoose pug