尝试覆盖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集合中的任何匹配的文档,因为usernameundefined 。 你知道他们对假设的看法!

我会把你的@Plato与你的答案相提并论,调查这些价值观的提示是让我弄清楚的。