尝试覆盖input区域中的预填充数据
我正在试图在Jade文件中显示一个input区域,其中存储在mongodb会话存储中的会话信息从预先填充的数据中收集。 Web应用程序构build在Express for node.js上。 我的Jade文件与input区域(预填入会话数据)类似:
input(name='username', value='#{username}')
所以input区域显示存储在会话中的正确的用户名。 然后,我希望用户能够编辑该字段并根据需要提交新的用户名。 我的mongodb更新()如下所示:
uname = request.body.username; targetcol.update({username: req.session.username, password: req.session.password}, {username: uname});
一旦提交,相关configuration文件的mongodb集合中的文档就不会被更新,而是保持与预先填充的值相同的值。 我想知道这是因为我在Jade文件中将它赋值为一个value=
吗? 有什么不对的build议,以及如何解决?
假设您正在使用表单,请使用req.body.username
从您的路由处理函数中访问名称为username
的input的value
属性:
app.use(express.bodyParser()); app.post('/form', function(req, res){ var newUsername = req.body.username; targetcol.update({ username: req.session.uname, password: req.session.password} , {username: newUsername}); res.redirect('/'); });
答案是在mongodb update()方面。 显然,我从我的问题中留下了一大部分…select标准实际上是这样的:
input(name='username', value='#{username}', disabled)
我没有意识到disabled
字段会传递未定义的值,我只是认为这使他们不可编辑。 所以更新()不工作,因为它无法find集合中的任何匹配的文档,因为username
是undefined
。 你知道他们对假设的看法!
我会把你的@Plato与你的答案相提并论,调查这些价值观的提示是让我弄清楚的。