【发布时间】:2017-11-14 19:06:14
【问题描述】:
我正在为我的数据库使用 nodejs express 和 firebase。所以我想做的是根据用户的发布请求,更新firebase数据并将用户重定向到另一个页面。但我不断收到错误:发送后无法设置标头。
这是我在 controller.js 文件中的代码:
app.post('/carpark', urlencodedParser, function(req,res){
req.session.carpark = req.body.carpark;
lotsRef.orderByChild('CarparkName').equalTo(req.session.carpark).on('value', function(snapshot){
for (var key in snapshot.val()) {
if (snapshot.val()[key]['Availability'] == true) {
firebase.database().ref('Lots/'+ key).update({'Availability': false });
res.redirect('checkin');
break;
}
}
});
已编辑:
app.post('/carpark', urlencodedParser, function(req,res){
req.session.carpark = req.body.carpark;
lotsRef.orderByChild('CarparkName').equalTo(req.session.carpark).on('value', function(snapshot){
for (var key in snapshot.val()) {
var allocatedtime = new Date().getHours() + ':' + (new Date().getMinutes() <10 ? '0' : '') + new Date().getMinutes() + ':' + (new Date().getSeconds() <10 ?'0' : '') + new Date().getSeconds();
req.session.key = key;
req.session.LotID = snapshot.val()[key]['LotID'];
req.session.AllocatedTime = allocatedtime;
req.session.SerialNum = snapshot.val()[key]['SerialNumber'];
var date = new Date().getFullYear() + "-" + (new Date().getMonth()+1) + "-" + new Date().getDate();
req.session.DateAllocated = date;
console.log(req.session);
firebase.database().ref('Lots/'+ req.session.key).update({'Availability': false });
break;
}
}
res.redirect('checkin');
});
【问题讨论】:
-
嘿,
res.redirect('checkin');这个语句不能进入 for 循环。或者你可以尝试从那里返回。 -
嗨,谢谢,但我把它放在那里的原因是因为我将快照的值存储到会话中(我在这里省略了)。如果我将重定向语句移出,那么会话将不会存储我不知道为什么的任何内容......但这有关系吗,因为一旦 if 语句完成,我就会跳出循环?
-
我们需要看到你的遗漏。您可能需要参考此内容以更好地了解错误stackoverflow.com/a/7086621/6165688 的原因我猜您正在尝试将某些内容存储在 req.session 中的错误位置
-
@divsingh 我已相应地编辑并添加了我的完整代码
-
@user8806671 我可以看到您不再有 if 子句。您想设置会话中的所有快照吗?如果是这样,那么你做的不对。
标签: node.js firebase express firebase-realtime-database controller