无法使用Mongoose中的模型创建文档

时间:2016-05-05 17:43:37

标签: node.js mongodb express mongoose

我正在尝试使用express和mongoose创建REST api。以下是用户模型的代码( user.server.model.js )。

const mongoose = require('mongoose');

var userSchema = new  mongoose.Schema({
    name: {
        first: { type: String, required: true },
        last: { type: String, required: true }
    },
    loginId: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    location: String,
    meta: { age: Number, website: String },
    isActive: Boolean,
    createdOn: { type: Date, default: Date.now },
    updatedOn: Date
});

var User = mongoose.model('User', userSchema);

exports.User = User;

我正在尝试在快速路线( routes.js )中使用此用户模型,如下所示:

const express = require('express'),
    User = require('../models/user.server.model'),
    router = express.Router();

router.route('/users')
    .post((req, res) => {
        let user = new User({
            name: req.body.name,
            loginId: req.body.loginId,
            password: req.body.password,
            location: req.body.location,
            meta: req.body.meta,
            createdOn: req.body.createdOn,
            updatedOn: req.body.updatedOn
        });

        user.save((err) => {
            if (err) {
                res.send(err);
            }
            else{
                res.json({ message: 'User created' });
            }
        });
    });

module.exports = router;

但是当我尝试使用Chrome中的Postman扩展程序测试此api时,我遇到了错误

  

TypeError:用户不是构造函数

节点版本:6.0

任何人都可以告诉我这里出了什么问题。

1 个答案:

答案 0 :(得分:1)

您将require值直接用作User,因此您应该在user.server.model.js中将exports.User更改为module.exports

module.exports = User;