尝试覆盖输入区域中的预填充数据

时间:2013-10-16 15:12:37

标签: html5 node.js mongodb express pug

我正在尝试在Jade文件中显示一个输入区域,其中预先填充的数据是从存储在mongodb会话存储中的会话信息中收集的。 Web应用程序构建在Express for node.js上。我的Jade文件在输入区域(预先填充了会话数据)中看起来像这样:

            input(name='username', value='#{username}')

因此输入区域显示存储在会话中的正确用户名。然后,我希望用户能够编辑该字段并根据需要提交新用户名。我的mongodb update()看起来像这样:

uname = request.body.username;
targetcol.update({username: req.session.username, password: req.session.password}, {username: uname});

然而,一旦提交,相关配置文件的mongodb集合中的文档没有被更新,它保持与预先填充的相同的值。我想知道这是因为我在Jade文件中将其指定为value=吗?关于什么是错的以及如何解决它的任何建议?

2 个答案:

答案 0 :(得分:1)

假设您正在使用表单,请使用value从路由处理函数访问名为username的输入的req.body.username属性:

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('/');
});

答案 1 :(得分:1)

答案是在mongodb update()方面。我明显地从问题中留下了很大的一部分......选择标准实际上就是这样:

input(name='username', value='#{username}', disabled)

我没有意识到disabled字段会传递未定义的值,我只是认为它使它们不可编辑。因此,update()无效,因为它无法在集合中找到任何匹配的文档,因为usernameundefined。你知道他们对假设的看法!

我会相信你@Plato的答案,调查价值观的暗示是让我想出这一点。