我正在使用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})
}) })
我可能会以错误的方式解决这个问题,我是网络开发的新手,这对我来说是错误的,但无法找到不同的方式。
答案 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();
});
});
});