Javascript 为什么我总是得到TypeError:用户不是构造函数?

Javascript 为什么我总是得到TypeError:用户不是构造函数?,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我正在练习创建模型和路线,并使用postman发送一个POST请求来测试它。然而,我一直认为用户不是一个构造函数错误 index.js路由 用户模式 我希望它会发回一个对象,其中包含我在邮递员上发送的以下信息: { "name": "Michael", "email": "email@eail.com", "password": "ThisIsAPassword" } 在编译模型之前,必须定义userSchema,如下所示: const mongoose = requi

我正在练习创建模型和路线,并使用postman发送一个POST请求来测试它。然而,我一直认为用户不是一个构造函数错误

index.js路由

用户模式

我希望它会发回一个对象,其中包含我在邮递员上发送的以下信息:

{
    "name": "Michael",
    "email": "email@eail.com",
    "password": "ThisIsAPassword"
}

在编译模型之前,必须定义userSchema,如下所示:

const mongoose = require('mongoose')
const validator = require('validator')

const userSchema = new mongoose.Schema({ 
    name: {
        type: String,
        required: true, 
        trim: true
    }, 
    email: {
        type: String,
        require: true,
        trim: true, 
        lowercase: true,
        validate(value) {
            if(!validator.isEmail(value)) {
                throw new Error('Email is invalid')
            }
        }
    },
    age: {
        type: Number,
        default: 0,
        validate(value) {
            if(value < 0) {
                throw new Error('Age must be a positive number.')
            }
        }
    },
    password: {
        type: String,
        trim: true,
        lowercase: true,
        required: true,
        minlength: 7,
        validate(value) {
            if( value.toLowerCase().includes("password")) {
                throw new Error("Password can't be 'password'.")
            }
        }
    }
})

const User = mongoose.model('User', userSchema);
exports.User = User

现在它是一个构造函数,因为我们说每个User实例都是userSchema的一个新实例。

我弄明白了。在index.js文件的第三个部分,我遗漏了require

与此相反:

const User = ('./models/user')
应该是这样的:

const User = require('./models/user')
谢谢大家的帮助

mongoose.model的第二个属性不是对象,而是mongoose.Schema
const mongoose = require('mongoose')
const validator = require('validator')

const userSchema = new mongoose.Schema({ 
    name: {
        type: String,
        required: true, 
        trim: true
    }, 
    email: {
        type: String,
        require: true,
        trim: true, 
        lowercase: true,
        validate(value) {
            if(!validator.isEmail(value)) {
                throw new Error('Email is invalid')
            }
        }
    },
    age: {
        type: Number,
        default: 0,
        validate(value) {
            if(value < 0) {
                throw new Error('Age must be a positive number.')
            }
        }
    },
    password: {
        type: String,
        trim: true,
        lowercase: true,
        required: true,
        minlength: 7,
        validate(value) {
            if( value.toLowerCase().includes("password")) {
                throw new Error("Password can't be 'password'.")
            }
        }
    }
})

const User = mongoose.model('User', userSchema);
exports.User = User
const User = ('./models/user')
const User = require('./models/user')