将JSON数组设置为Schema字段

时间:2018-03-13 01:59:04

标签: json node.js

我正在尝试为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将帖子发送到我的本地计算机。

1 个答案:

答案 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 }]
});