这是我正在使用的表格:
<form method="post" enctype="multipart/form-data">
<label class="label">Class Name</label>
<label class="input">
<input type="text" name="class_name[]">
</label>
<label class="label">Grade</label>
<label class="input">
<input type="text" name="grade[]">
</label>
</form>
以下是我正在使用的架构:
var SchoolSchema = new mongoose.Schema({
classroom: [{
Name: {
type: String,
required: true
},
grade: {
type: Number,
default: 1
}
}]
});
首先,我尝试使用以下功能保存数据:
var School = new mongoose.Schema.model('School');
exports.submit = function(req, res) {
var classRooms = [];
for (var i = 0; i < req.body.class_name.length; i++) {
classRooms.push({Name: req.body.class_name[i], grade: req.body.grade[i]});
}
School.create({classroom: classRooms}, function(err, school) {
...
});
};
当表单中只有一个条目时,它工作正常但是对于多个条目,它输入单个文档中的所有条目。例如,如果通过表格我输入
姓名:ABC等级:1 名称:EFG等级:2
此数据在数据库中保存为
classroom:[{Name:ABC,EFG, Grade:1,2}]
它应该像
classroom:[{Name:ABC, Grade:1},{Name: EFG, Grade:2}]
我甚至尝试更改功能如下:
var School = new mongoose.Schema.model('School');
exports.submit = function(req, res) {
var classRooms = [];
for (var i = 0; i < req.body.class_name[0].length; i++) {
classRooms.push({Name: req.body.class_name[0][i], grade: req.body.grade[0][i]});
}
School.create({classroom: classRooms}, function(err, school) {
...
});
};
现在这适用于多个条目,但是当我输入单个entrie时它没有按预期工作。对于例如如果我通过表单输入以下数据,
姓名:AB级:2
它以
的形式保存在数据库中classroom:[{Name:A,Grade:2 },{Name:B,Grade:1}]
有谁请让我知道我在这里做错了什么以及如何纠正这个问题。谢谢!!