2016-09-17 7 views
0

に同じのmongo DBクエリ結果のように、クライアントからの2つの要求は、get( '/ ALLUSERS')リユース私がシナリオを持って継続的な2つの要求

のget( '/ structuredDataは

連続があります')

これらの2つの要求は、結果としてバルクデータを返す同じマングースクエリを呼び出します。しかし、私は、各リクエストでデータを別々に処理する必要があります。

ここでは、同じクエリを2回実行する際に時間が浪費されるため、mongooseクエリの結果を1回だけ実行して再利用したいと考えています。

解決策が必要です。

答えて

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

この鐘は私に鐘をありがとう:) –

関連する問題