node.js - ioredis - use node-redis con node 8 util.promisify
scala redis (1)
nodo -v: 8.1.2
Uso redis client node_redis con el nodo 8 util.promisify, no blurbird.
la devolución de llamada redis.get está bien, pero promisifica el tipo de mensaje de error de obtención
TypeError: no se puede leer la propiedad ''internal_send_command'' de undefined
en get (D: / Github / redis-test / node_modules / redis / lib / commands.js: 62: 24)
en get (internal / util.js: 229: 26)
en D: / Github / redis-test / app.js: 23: 27
en el objeto. (D: / Github / redis-test / app.js: 31: 3)
en Module._compile (module.js: 569: 30)
en Object.Module._extensions..js (module.js: 580: 10)
en Module.load (module.js: 503: 32)
en tryModuleLoad (module.js: 466: 12)
en Function.Module._load (module.js: 458: 3)
en Function.Module.runMain (module.js: 605: 10)
mi código de prueba
const util = require(''util'');
var redis = require("redis"),
client = redis.createClient({
host: "192.168.99.100",
port: 32768,
});
let get = util.promisify(client.get);
(async function () {
client.set(["aaa", JSON.stringify({
A: ''a'',
B: ''b'',
C: "C"
})]);
client.get("aaa", (err, value) => {
console.log(`use callback: ${value}`);
});
try {
let value = await get("aaa");
console.log(`use promisify: ${value}`);
} catch (e) {
console.log(`promisify error:`);
console.log(e);
}
client.quit();
})()
cambiando let get = util.promisify(client.get);
para let get = util.promisify(client.get).bind(client);
lo resolvió por mi :)