Pug模板用户名插值问题:MongoDB用户数据填充编辑表单
解决方案
看起来你已经把路由部分搞定了——通过User.findById获取用户数据,再把它作为currentUser传给editProfile模板,这一步完全没问题!接下来只需要在Pug模板里把这些数据绑定到表单输入框的value属性上就行,具体做法如下:
基础表单绑定示例
假设你的用户Schema包含username、email和bio字段,对应的Pug表单代码可以这么写:
form(method="POST" action="/users/"+currentUser._id+"/edit") //- 用户名输入框 .form-group label(for="username") 用户名 input(type="text" id="username" name="username" value=currentUser.username required) //- 邮箱输入框 .form-group label(for="email") 邮箱 input(type="email" id="email" name="email" value=currentUser.email required) //- 个人简介文本域(注意textarea的写法和input不同) .form-group label(for="bio") 个人简介 textarea(id="bio" name="bio" rows="3")= currentUser.bio || '' button(type="submit" class="btn btn-primary") 保存修改
关键细节说明
- 普通输入框:直接在
input标签的value属性后写=currentUser.字段名,Pug会自动将用户的现有数据填充到输入框中。 - 文本域(textarea):不能用
value属性,需要把变量值直接放在标签内部,用=输出。加上|| ''是为了处理字段为空的情况,避免页面显示undefined。 - 表单提交路径:通过
currentUser._id拼接action路径,确保表单提交到对应用户的编辑接口。
如果你的用户Schema还有其他字段(比如年龄、地址等),只需要按照同样的逻辑,把currentUser.对应字段名绑定到相应的输入框value上即可。用户打开编辑页面时,输入框会自动加载现有数据,未修改的话提交时会保留原数值,完全符合你的需求。
内容的提问来源于stack exchange,提问作者J.G.Sable
相关产品推荐
相关产品推荐

