Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Q + node_redis
# Applies Q.nbind to all redis operations and returns a wrapped client
_ = require("underscore")._
Q = require "q"
nbindOps = (client) ->
functions = _.functions client
# All the ops are available as upper/lowercase functions, I exploit this
# to filter out the Redis operations from the other functions of the client
ops = functions.filter (f) -> f.toUpperCase() is f
lc = (op.toLowerCase() for op in ops)
ops = ops.concat(lc)
p = {}
for op in ops
p[op] = Q.nbind client[op], client
p["multi"] = p["MULTI"] = ->
m = client, arguments
m.exec = Q.nbind m.exec, m
nbind = (client) ->
client.q = nbindOps(client)
module.exports =
nbindOps: nbindOps
nbind: nbind

Nice hack on figuring out which methods are redis commands 💎

goalsin commented Apr 22, 2014

why not use nfcall ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment