node.js - nodejs 通过 get获取数据修改redis数据

查看:82
本文介绍了node.js - nodejs 通过 get获取数据修改redis数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如下代码是没有报错的正确代码 我通过https获取到数据 想用redis set一个键值存储 现在我掉入了回调陷阱
res.on 里面接收到的数据是data 里面如果放入 client.on('connect',functi ...这个修改函数就会报错。

'use strict';
var redis = require('redis'),
    RDS_PORT = 6379,        //端口号
    RDS_HOST = '127.0.0.1',    //服务器IP
    //RDS_PWD = 'porschev',    //密码    
    RDS_OPTS = {},            //设置项
    client = redis.createClient(RDS_PORT,RDS_HOST,RDS_OPTS);
/*client.auth(RDS_PWD,function(){
    console.log('通过认证');
});*/
var https = require('https');

https.get('https://encrypted.google.com', (res) => {
  //console.log('statusCode:', res.statusCode);
  //console.log('headers:', res.headers);

  res.on('data', (data) => {
    //process.stdout.write(d);
    //如果这里写client.on就会报错 
    
  });

}).on('error', (e) => {
  console.error(e);
});


client.on('connect',function(){
        //console.log(data);
        client.set('author', 'Wilson',redis.print);
        client.get('author', redis.print);
        console.log('connect');
    });


client.on('ready',function(err){
    console.log('ready');
});

解决方案

等 redis ready 了再发送

client.on('ready',function(err){
    https.get('https://encrypted.google.com', (res) => {
    //   console.log('statusCode:', res.statusCode);
    //   console.log('headers:', res.headers);

      var rawData = '';
      res.on('data', (chunk) => {
        rawData += chunk
      });
      res.on('end', () => {
          client.set('data', rawData, redis.print);
          client.get('data', redis.print);
      })

    }).on('error', (e) => {
      console.error(e);
    });
    console.log('ready');
});

这篇关于node.js - nodejs 通过 get获取数据修改redis数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆