2016-09-17 20 views
1

mongodbのテーブルのすべての行を表示するnodejsの簡単な関数を作成するのに助けが必要です。mongodbからnode.jsキャッシュにデータを保存する方法は?

2回目の実行では、node.jsキャッシュからデータを取得し、mongodbには移動しません。そのアイデアのような 気にいら:

getData function(){ 

    if(myCache == undefined){ 
     // code that get data from mongodb (i have it) 
     // and insert into cache of node.js (TODO) 
    } 
    else { 
     // code that get data from cache node.js (TODO) 
    } 
} 

答えて

0

一般的な考え方は、キャッシュオブジェクトは、キーと値のストレージを持つことになりますした非同期キャッシュのいくつかのフォームを実装することです。例えば、あなたの考えを広げて、このパターンに従うように関数を再構成することができます:

var myCache = {}; 

var getData = function(id, callback) { 
    if (myCache.hasOwnProperty(id)) { 
     if (myCache[id].hasOwnProperty("data")) { /* value is already in cache */ 
      return callback(null, myCache[id].data); 
     } 

     /* value is not yet in cache, so queue the callback */ 
     return myCache[id].queue.push(callback); 
    } 

    /* cache for the first time */ 
    myCache[id] = { "queue": [callback] }; 

    /* fetch data from MongoDB */ 
    collection.findOne({ "_id": id }, function(err, data){ 
     if (err) return callback(err); 

     myCache[id].data = data; 

     myCache[id].queue.map(function (cb) { 
      cb(null, data); 
     }); 

     delete myCache[id].queue; 
    }); 

} 
関連する問題