# cache-manager-mongodb-fix

> Mongodb store for the node-cache-manager

Latest version **0.2.3** (published 2020-10-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install cache-manager-mongodb-fix
pnpm add cache-manager-mongodb-fix
yarn add cache-manager-mongodb-fix
bun add cache-manager-mongodb-fix
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.3 |
| Published | 2020-10-25 |
| First published | 2019-12-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 18.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | V4l3r10 |
| Maintainers | darkingdoom |
| Keywords | cache, mongodb, cache manager, multiple cache |

## Links

- npm: https://www.npmjs.com/package/cache-manager-mongodb-fix
- Repository: https://github.com/ihabZhaika/node-cache-manager-mongodb
- Homepage: https://github.com/ihabZhaika/node-cache-manager-mongodb#readme
- Issues: https://github.com/ihabZhaika/node-cache-manager-mongodb/issues
- npm.io page: https://npm.io/package/cache-manager-mongodb-fix

## Dependencies (4)

- [lodash](https://npm.io/package/lodash.md) ^4.17.11
- [mongodb](https://npm.io/package/mongodb.md) ^3.1.13
- [bluebird](https://npm.io/package/bluebird.md) ^3.5.3
- [cache-manager](https://npm.io/package/cache-manager.md) ^2.9.0

## Alternatives

- [angular-pipes](https://npm.io/package/angular-pipes.md) — 5.6K weekly downloads
- [@ng-web-apis/midi](https://npm.io/package/@ng-web-apis/midi.md) — 2.6K weekly downloads
- [happn-3](https://npm.io/package/happn-3.md) — 1.6K weekly downloads
- [@opensip-cli/lang-go](https://npm.io/package/@opensip-cli/lang-go.md) — 1.2K weekly downloads
- [mongoose-typescript](https://npm.io/package/mongoose-typescript.md) — 85 weekly downloads

## Recent versions

- 0.2.3 (latest) — 2020-10-25
- 0.2.1 — 2019-12-02

## README

Node Cache Manager store for MongoDB
==================================

[![Codacy Badge](https://api.codacy.com/project/badge/c865d138d52541f8845090ed3992357a)](https://www.codacy.com/app/valerio-cavagni/node-cache-manager-mongodb) [![Dependency Status](https://david-dm.org/v4l3r10/node-cache-manager-mongodb.svg)](https://david-dm.org/v4l3r10/node-cache-manager-mongodb)

The MongoDb store for the [node-cache-manager](https://github.com/BryanDonovan/node-cache-manager) module. 

Special thx to @onlyurei and @dcolens

Installation
------------

```sh
npm install cache-manager-mongodb --save
```

## News

​	Switch to full Promise support.

​	New Mocha test (thx to @[dcolens](https://github.com/v4l3r10/node-cache-manager-mongodb/issues?q=is%3Apr+is%3Aopen+author%3Adcolens) )

Usage examples
--------------

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

### Single store

```js
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

```js
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.

---
_Source: https://npm.io/package/cache-manager-mongodb-fix · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
