尝试使用node.js从localhost redis客户端获取键值对。
如果我包括 res.json()
在function/for循环中,多次发送响应会导致http\ U头错误。
如果我在函数/循环外定义它,就会得到一个空数组。
错误:
_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
下面是的代码 app.js
```
router.get('/route1', function(req, res)
{
var valarr=[];
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});
//I get ERR_HTTP_HEADERS_SENT if res.json() is defined here
});
}
console.log(valarr); //Empty
res.json({result1:keys, result2:valarr});
//Returns an empty array (valarr)
});
});
1条答案
按热度按时间t98cgbkg1#
您正在获取(err\uhttp\u headers\u sent),因为您没有检查值变量是否有值。只需使用if添加条件来检查值变量。如果值将有值,则只有它将被添加到valarr数组中,并将发送更新的valarr数组作为响应。
解决方案: