Have ideas to improve npm?Join in the discussion! »

cache-manager-mongodb-fix

0.2.3 • Public • Published

Node Cache Manager store for MongoDB

Codacy Badge Dependency Status

The MongoDb store for the node-cache-manager module.

Special thx to @onlyurei and @dcolens

Installation

npm install cache-manager-mongodb --save

News

​ Switch to full Promise support.

​ New Mocha test (thx to @dcolens )

Usage examples

Here are examples that demonstrate how to implement the Mongodb cache store.

Single store

var cacheManager = require('cache-manager');
var mongoStore = require('cache-manager-mongodb');
 
 
var mongoCache = cacheManager.caching({
    store : mongoStore,
    uri : "mongodb://user:pass@localhost:27017/nodeCacheDb",
    options : {
      collection : "cacheManager",
      compression : false,
      poolSize : 5,
      autoReconnect: true
    }
  });
 
var ttl = 60;
 
mongoCache.set('foo', 'bar', ttl)
    .then(()=>{
     return mongoCache.get('foo')
    }).then((result) => {
        console.log(result);
        // >> 'bar'
        return mongoCache.del('foo');
    });
});
 
function getUser(id) {
    return new Promise((resolve,reject)=>{
    setTimeout(function () {
        console.log("Returning user from slow database.");
        return resolve({id: id, name: 'Bob'});
    }, 100);
}
 
var userId = 123;
var key = 'user_' + userId;
 
// Note: ttl is optional in wrap()
mongoCache.wrap(key, function () {
    return getUserPromise(userId);
}, ttl)
    .then((user) => {
     console.log(user);
 
    // Second time fetches user from mongoCache
    mongoCache.wrap(key, function () {
       return getUserPromise(userId);
    }.then(( user) => {
        console.log(user);
    });
});
 

Multi-store

var cacheManager = require('cache-manager');
var mongoStore = require('cache-manager-mongodb');
 
var mongoCache = cacheManager.caching({store: mongoStore, uri: 'mongodb://user:pass@localhost:27017/nodeCacheDb',options: { collection: 'cacheManager'}, ttl: 600});
var memoryCache = cacheManager.caching({store: 'memory', max: 100, ttl: 60});
 
var multiCache = cacheManager.multiCaching([memoryCache, mongoCache]);
 
 
userId2 = 456;
key2 = 'user_' + userId;
ttl = 5;
 
// Sets in all caches.
multiCache.set('foo2', 'bar2', ttl)
    .then(()=>{
     // Fetches from highest priority cache that has the key.
     return multiCache.get('foo2')
    }).then((result) => {
        console.log(result);
        // >> 'bar2'
        // Delete from all caches
        return multiCache.del('foo2');
    });
});
 
// Note: ttl is optional in wrap()
multiCache.wrap(key2, function () {
    return getUserPromise(userId2);
}, ttl)
.then((user) => {
    console.log(user);
     // Second time fetches user from memoryCache, since it's highest priority.
     // If the data expires in the memory cache, the next fetch would pull it from
     // the 'someOtherCache', and set the data in memory again.
     return multiCache.wrap(key2, function () {
         return getUserPromise(userId2);
     });
}).then((user)=>{
    console.log(user);
});
 
function getUserPromise(id) {
    return new Promise((resolve,reject)=>{
        setTimeout(function () {
         console.log("Returning user from slow database.");
         return resolve({id: id, name: 'Bob'});
    }, 100);
    })
});

Contribution

If you would like to contribute to the project, please fork it and send us a pull request.

License

node-cache-manager-mongodb is licensed under the MIT license.

Install

npm i cache-manager-mongodb-fix

DownloadsWeekly Downloads

3

Version

0.2.3

License

MIT

Unpacked Size

18.7 kB

Total Files

9

Last publish

Collaborators

  • avatar