2016-09-17 75 views
0

我有一種情況一樣,還有來自客戶端兩個請求不斷重用的連續兩個請求

得到相同的蒙戈DB查詢結果( '/ ALLUSERS')

的get('/ structuredData ')

這兩個請求將依次調用相同的貓鼬查詢,從而返回一個批量數據。但是我必須在每個請求中以不同的方式處理數據。

在這裏,我想通過僅執行一次來重用mongoose查詢的結果,因爲在執行相同查詢兩次時會浪費更多的時間。

需要針對此問題的解決方案。

回答

0

如果存儲在mongodb中的數據會經常更改,我建議您只是查詢。

如果數據不會頻繁更改,可以將數據緩存到全局變量或redis。

通過變量:

var users, lastTimestamp; 

function getAllUser(req, res, next) { 

} 

function getStructuredData(req, res, next) { 

} 

function getData(req, res, next) { 
    if(!users || Date.now() - lastTimestamp > 1000 * 60) { 
    query('some query', function(err, data) { 
     if(err) 
     return next(err); 
     users = data; 
     lastTimestamp = Date.now(); 
     next(); 
    }); 
    } 
} 

app.get('/allUsers', getData, getAllUser); 

app.get('/structuredData', getData, getStructuredData); 
+0

沒有,數據不會頻繁地改變。我嘗試將數據緩存到redis。但是,將數據寫入redis緩存需要更多時間,如果再次執行相同的查詢,我會得到結果。 –

+0

謝謝你給我敲響了一個鐘聲:) –