我需要帮助在nodejs中创建简单函数,显示mongodb中某些表中的所有行。
第二次运行它的函数从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 :(得分: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;
});
}