【发布时间】:2018-07-27 10:04:49
【问题描述】:
我正在使用 Node/EJS/Mongo 构建一个应用程序,其中用户正在构建能力调查,并且需要为每个问题设置所需的级别。他们用来选择关卡的表格有一系列看起来像这样的选择:
<select class="form-control col-sm-4" id="<%=capability.capabilityId%>" name="<%=capability.capabilityId%>">
<option value=1>Developing</option>
<option value=2>Intermediate</option>
<option value=3>Advanced</option>
<option value=4>Role Model</option>
</select>
当用户随后提交此表单时,我想更新评估以加载这些预期级别。
我的 mongodb 中的评估架构如下所示:
var assessmentSchema = new mongoose.Schema ({
title: String,
startDate: Date,
endDate: Date,
behaviours: [{
behaviourName: String,
behaviourId: String,
order: Number,
capabilities: [{
orderCap: Number,
capabilityId: String,
capabilityName: String,
capabilityDesc: String,
developing: String,
intermediate: String,
advanced: String,
roleModel: String,
expectedLevel: Number,
motivation1: String,
motivation2: String,
motivation3: String,
motivation4: String,
motivation5: String
}] //capabilities object
}],
targetEmployees:[{
type: mongoose.Schema.Types.ObjectId,
ref: "Users"
}] //behaviours object
});
我在想的是我想遍历所有功能,在req.body 中找到名称与capabilityId 匹配的条目,然后更新desiredLevel。我只是看不出如何使它工作。我的路线代码目前看起来像:
router.put(':id/levels', function(req, res) {
Assessment.findById(req.params.id, function(err, foundAssessment) {
foundAssessment.behaviours.forEach(function(b) {
b.capabilities.forEach(function(c) {
c.expectedLevel = req.body.SOMETHINGHERE
});
});
foundAssessment.save(function(err) {
if (err) {
console.log(err);
req.flash("error", err.message);
res.redirect("back");
} else {
// Send json back to xhr request
res.json(foundAssessment);
}
});
});
});
【问题讨论】:
标签: javascript node.js express ejs