无法将文档保存到集合中 - mongoose

时间:2017-05-09 18:44:59

标签: node.js express mongoose mongoose-schema

我有一个教授的猫鼬模型,看起来像这样。

var mongoose = require('mongoose');
var uuidV4 = require('uuid/v4');
var Professors = mongoose.model('Professors', {
    _id:{
        type: String,
        defualt: uuidV4()
    },
    professorfirstName: {
        type: String,
    },
    professroLastName: {
        type: String,
    },
    reviews: [
        {
            review: {
                type: String
            },
            reviewer: {
                type: String
            },
            rating: {
                type: Number
            }
        }
    ],
    ratings: {
        type: Number
    }
}); 

module.exports = {
    Professors: Professors
}

我教授档案的路线如下:

var {Professors} = require('./../server/models/professors');
var {mongoose} = require("./../server/db/mongoose");
var router = require('express').Router();

router.get('/getAllProfessors', (req, res) => {
    Professors.find().then((data) => {
        res.send({data});
    }, (err) => {
        res.status(400).send(err);
    });
});

router.post('/add', (req, res) => {
    var professor = new Professors({
        professorfirstName: "test",
        professorlastName: "test",
        reviews: [],
        ratings: 5
    });

    professor.save().then((data) => {
        res.send({data});
    }, (err) => {
        console.log("Didn't save!!");
        res.status(400).send(err);
    });
});

module.exports = router;

对于上面的代码,我的获取路由工作正常。我能够提取数据库中的所有教授。但我的'添加'路线不起作用。我无法将记录保存在集合中。我获得状态400,我只在邮递员那里得到一个空的记录,就像这个'{}'。我在这做错了什么?

1 个答案:

答案 0 :(得分:1)

您的架构存在一些问题:

_id:{
    type: String,
    defualt: uuidV4()
},

defualt拼写错误,而且它应该引用一个函数;在你的情况下,你正在立即执行该函数,因此引用是一个字符串,这是不对的。

这应该更好:

_id : {
    type    : String,
    default : uuidV4
}

模式中还有另一个拼写错误:professroLastName应为professorLastName