我目前正在向我的节点应用程序发出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});
});
});
1条答案
按热度按时间dwbf0jvd1#
发送错误\uhttp\u头\u的原因是调用
res.json()
在for循环中,使节点服务器尝试在后续的res.json()
在第一个res.json()
已发送到客户端。如果希望console.log扫描的所有redis键的值,我建议将它们存储在一个数组中,并在端点的底部返回该数组。