我正在尝试为rest api设置架构。我需要studentSchema能够接收一个json数组作为其中一个字段的条目,如下所示:
var studentSchema = new Schema({
cpf: String,
password: String,
name: String,
currentDisciplines: [],
pastDisciplines: []
});
当我在我的api上使用邮递员以下路径时:
router.route('/createStudent')
.post(function(req, res){
var student = new Student();
student.name = req.body.name;
student.password = req.body.password;
student.cpf = req.body.cpf;
student.currentDisciplines = req.body.currentDisciplines;
student.pastDisciplines = req.body.pastDisciplines;
student.save(function(err){
if(err)
res.json(err);
res.json(student);
});
});
我明白了:
{
"currentDisciplines": [
"{name: \"DISC1\", code: \"MD0001\", average:10}",
"{name: \"DISC\", code: \"MF0002\", average: 10}"
],
"_id": "5aa72d0663c27f09a8ae2b90",
"name": "NAME",
"password": "vivi123",
"cpf": "21645227022",
"__v": 0
}
似乎不是在currentDisciplines上接收JSON Arrays,而是获取一个String,其中包含我在其中输入的json对象的值。有没有我可以设置我的架构,所以我会得到json对象数组而不是字符串数组?
我使用x-www-form-urlencoded将帖子发送到我的本地计算机。
答案 0 :(得分:0)
从Mongoose documentation拉出,架构中的空数组将默认为字符串数组。由于您希望它是一个对象数组,因此您需要定义该对象模式。
试试这个:
var studentSchema = new Schema({
cpf: String,
password: String,
name: String,
currentDisciplines: [{ name: String, code: String, average: Number }],
pastDisciplines: [{ name: String, code: String, average: Number }]
});