无法使用node.js获取redis键值对

ergxz8rk  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(581)

我目前正在向我的节点应用程序发出post请求,以便从中获取密钥和值 index.html . client.set 用于设置键值,类似地 client.get 获取所有键值。但是,我不能 console.log() 尝试发送两次响应的值。
错误:

_http_outgoing.js:485
    throw new ERR_HTTP_HEADERS_SENT('set');
    ^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

下面是我用来获取所有键的值的逻辑。
应用程序.js

var client      = redis.createClient(); 
var port = 6379;
var host = "127.0.0.1";
var client = redis.createClient(port, host);
router.post('/route1', function(req, res)
{ 
    var valarr=[];
    keyname= req.body.keyname;
    valuename= req.body.valuename;
    console.log(keyname);
    console.log(valuename);

    client.set(keyname, valuename, function(err, reply) {
        console.log(reply);
    });

    client.keys('*', function(err, keys) {
        console.log(keys);
        for(var i=0;i<keys.length;i++){
            client.get(keys[i], function (error, value) {
                if (err) return console.log(err);
                console.log(value);
                valarr.push(value);           
            });  
        }
        res.json({result1:keys, result2: valarr});
    });
});
dwbf0jvd

dwbf0jvd1#

发送错误\uhttp\u头\u的原因是调用 res.json() 在for循环中,使节点服务器尝试在后续的 res.json() 在第一个 res.json() 已发送到客户端。
如果希望console.log扫描的所有redis键的值,我建议将它们存储在一个数组中,并在端点的底部返回该数组。

相关问题