获取所有页面所需数据的有效方法

时间:2017-03-01 16:24:34

标签: node.js express

我正在使用nodejs和express,我有一个使用mongodb中的数据构建的导航菜单,我现在只是调用数据库来获取公司列表并将其传回每条路径。似乎没有办法在localstorage客户端存储此信息。所以我想知道处理这种情况的最有效方法是什么。我的代码示例

admin.get('/', function(res, resp){
    mongodb.connect(url, function(err, db){  
        var collection = db.collection('companies')
        collection.find({}).toArray(function(err, companies){
            res.render('adminview', {companies:companies})//once the page is rendered I would like to save the company list to localstorage.
         })
    })
})  
admin.get('/:company', function(res, resp){
/* repeating code from above because I need this list */
     mongodb.connect(url, function(err, db){  
        var collection = db.collection('companies')
        collection.find({}).toArray(function(err, companies){
            /* more code to do stuff to render the company page */
            res.render('companyadminview', {companies:companies, company:company})
        }) }) 

我可能会以错误的方式解决这个问题,我是网络开发的新手,这对我来说是错误的,但无法找到不同的方式。

1 个答案:

答案 0 :(得分:1)

所以,首先你应该可以将它存储在localstorage或sessionstorage中,除非你的目标浏览器不支持它。

那就是说,我认为最好,因为你将它存储在数据库中这意味着它会以足够的频率发生变化,如果你将其缓存,你将会遇到错误的客户端行为那里太久了。

相反,我只是设置一个中间件并基于每个请求将它附加到locals对象,除非你想在服务器上做某种缓存:

app.use(function(req, res, next) {
  mongodb.connect(url, function(err, db){  
        if (err) return next(err);
        var collection = db.collection('companies')
        collection.find({}).toArray(function(err, companies){
            if (err) return next(err);
            res.locals.companies = companies;
            next();
         });
    });
});