2016-09-17 59 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

谢谢你给我敲响了一个钟声:) –