【发布时间】:2016-01-24 11:33:18
【问题描述】:
我看过很多例子,如何更新数组,比如这个 Mongoose find/update subdocument 和这个 Partial update of a subdocument with nodejs/mongoose
但我的目标是更新特定字段,例如在用户输入数据的表单中。
我正在使用 ejs 进行模板化。
这是代码
为了清楚起见,这里是用户的架构
var UserSchema = mongoose.Schema({
resume: {
education: [{ type: String}],
}
});
路由代码
router.post('/update-resume', function(req, res) {
User.findById(req.user._id, function(err, foundUser) {
// Take a look over here, how do I update an item in this array?
if (req.body.education) foundUser.resume.education.push(req.body.education);
foundUser.save(function(err) {
if (err) return next(err);
req.flash('message', 'Successfully update a resume');
return res.redirect('/update-resume')
});
});
});
如果你看一下上面的代码,我的目标是查询一个恢复的用户数据,并更新它的当前值。
前端代码
<form role="form" method="post">
<div class="form-group">
<label for="education">Education:</label>
<% for(var i = 0; i < user.resume.education.length; i++) { %>
<input type="text" class="form-control" name="education" id="education" value="<%= user.resume.education[i] %>">
<% } %>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
前端代码确实有效,它在每个user.resume.education 数组中进行迭代,并显示数组中的所有值。但是如何更新呢?
【问题讨论】: