2017-03-01 13 views
0

我正在使用nodejs和表達式,我有一個導航菜單,它是使用MongoDB中的數據構建的當前我只是調用數據庫來獲取列表並將其轉移回每條路線。似乎沒有辦法將這些信息存儲在本地存儲客戶端。所以,我的「M想知道什麼是處理這種情況的最有效途徑。我的代碼示例有效的方式來獲取所有頁面上需要的數據

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}) 
     }) }) 

我可能要對這個錯誤的方式我是新來的web開發這種感覺我錯了,但能「T找出一種不同的方式。

+1

*「有沒有按」 t似乎是一種將這些信息存儲在本地存儲客戶端的方法「* wut –

+0

@KevinB有一件東西叫做localStorage,它可以在客戶端保存數據,你可以在這裏閱讀更多關於它的信息:https://www.w3schools.com /html/html5_webstorage.asp –

+0

沒錯。是什麼讓你覺得你不能使用它?在客戶端或服務器端,這裏的一些緩存是一個好主意。 –

回答

1

所以,首先你應該能夠將其存儲在localStorage的或sessionStorage的就好了,除非你的目標不支持它的瀏覽器。

也就是說,我認爲最好是而不是,因爲你將它存儲在數據庫中意味着它隨着足夠的fr如果你在那裏緩存太長時間,你會得到錯誤的客戶端行爲。

相反,我只是設置一箇中間件並將其安裝到當地人對每個請求的基礎對象,除非你想要做一些緩存的服務器上:

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(); 
     }); 
    }); 
}); 
+0

好吧,我正在閱讀有關使用下一個,以及似乎要走的道路和好點的數據可以改變。我沒有考慮這個問題。 –

+0

@ S.Will爲什麼你沒有給出這個答案的一個觀點,或者你是否和其他人低估了?我只是尋找最合適的初始方式來加載所有路線的數據,即所有頁面,並且確實像您一樣,用於導航欄。這個主題是有幫助的,有緩存到本地存儲的想法(一個例子將是很好的保羅,相對於app.use語句中的中間件調用。感謝提示。 – blamb

相關問題