我正在使用Node JS + Express + Jade将网页值插入到Mongo DB中。 我需要插入True或False,具体取决于是否启用了复选框。
在我的 router.js 中,我有以下内容:
app.get('/notification', function(req, res) {
res.render('notification', { title: 'Nueva notificacion', notifications : NT });
});
app.post('/notification', function(req, res){
console.log('Adding new notification');
AM.addNewNotification({
name : req.param('name'),
notification : req.param('notification'),
active : req.param('active')
}, function(e){
if (e){
res.send(e, 400);
} else{
res.send('ok', 200);
}
});
});
在我看来,我有以下内容:
.controls
label#active-me.checkbox Active
input(type="checkbox", name="active", id="active",checked='checked')
但是我无法插入它,看起来没有采取值。 仅插入名称和通知值(文本)。
{ "name" : "Goodbye world", "notification" : "Short Message Service", "_id" : ObjectId("5298f603bd07b80376000005") }
有什么建议吗?
由于
答案 0 :(得分:2)
浏览器会在复选框时为复选框添加复选框的值。有几种方法可以在服务器上处理此行为。
最明显的是将参数缺失视为错误。
另一种方式是Rails的作用:在复选框之前添加一个具有相同名称和零值的隐藏输入。在你的情况下:
.controls
label#active-me.checkbox Active
input(type="hidden", name="active", value=0)
input(type="checkbox", name="active", id="active",checked='checked')
此外,app.post
中的代码可能应该使用req.body
,而不是req.param
。
答案 1 :(得分:1)
.controls
label#active-me.checkbox Active
input(type="checkbox", name="checkedboxes[]",checked='true')
这将在req.body
中为您提供一系列复选框