【发布时间】:2014-12-28 12:56:17
【问题描述】:
我正在使用 Express (4.x)、Redis (2.8) 和 Bluebird (2.x) - 需要将多个 Redis 调用串在一起以返回响应:
var promise = require('bluebird');
var redis = require('redis');
var redis = redis.createClient(6379,process.env["REDIS_ENDPOINT"],{});
promise.promisifyAll(redis);
// GET
exports.inOffers = function (req, res) {
return redis.smembersAsync('advertisers')
.map(function(advId){
console.log('advId',advId);
return redis.smembersAsync('advertiser:'+advId+':inoffers')
.map(function(inOfferId){
console.log('offerId: ',inOfferId);
return redis.hgetallAsync('advertiser:'+advId+':inoffer:'+inOfferId);
})
})
.done(function(inOffers){
console.log('InOffers: ',inOffers);
res.json({inOffers: inOffers})
})
.catch(function(err){
console.log((new Date).toUTCString()+" [ERROR] ", err);
res.writeHead(500);
res.end();
});
};
根据日志,数据是从 Redis 正确收集的,但我收到以下错误,而不是响应:
/var/app/current/node_modules/bluebird/js/main/async.js:95 扔 res.e; ^ 错误:发送后无法设置标头。
有什么想法吗?我是蓝鸟新手,可能搞砸了……
【问题讨论】:
标签: node.js express redis promise bluebird