Skip to content

Instantly share code, notes, and snippets.

@rbpinheiro
Last active October 22, 2016 23:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbpinheiro/942218abe33a6b533d37bbd9e70e129c to your computer and use it in GitHub Desktop.
Save rbpinheiro/942218abe33a6b533d37bbd9e70e129c to your computer and use it in GitHub Desktop.
dataloader - async map issue
{
"presets": ["es2015"]
}
import DataLoader from 'dataloader';
import redis from 'redis';
import express from 'express';
class RedisMap {
constructor() {
this.client = redis.createClient();
}
get(key) {
// return false;
return new Promise((resolve, reject) => {
this.client.get(key, value => {
if (value) {
return resolve(value);
}
return resolve(undefined);
});
});
}
set(key, valuePromise) {
valuePromise.then(value => {
this.client.set(key, value);
});
}
delete(key) {
this.client.del(key);
}
clear() {
this.client.flushdb();
}
}
const loader = new DataLoader(
keys => Promise.resolve(keys.map(key => `${key} loaded`)),
{
cacheMap: new RedisMap()
}
);
const app = express();
app.get('/:id', (req, res) => {
loader.load(req.params.id).then(val => {
res.send(val);
});
});
app.listen(3000, () => {
console.log('running √');
});
{
"dependencies": {
"babel-cli": "^6.16.0",
"babel-preset-es2015": "^6.16.0",
"dataloader": "^1.2.0",
"express": "^4.14.0",
"redis": "^2.6.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment