简体   繁体   中英

I am trying to use mongoose Schema in my program but it keeps on showing error User is not a constructor

I am trying to use mongoose Schema in my program but it keeps on showing error User is not a constructor.

I'm not sure why exactly is this happening...

This is my current 'api.js' source code:

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
const Schema = mongoose.Schema;
const db = 'mongodb://localhost:27017/stfe';
mongoose.connect(db,(err) => {
    if(err) {
        console.log("error");
    }
    else {
        console.log("DB connected a port 27017");
    }
});
var User = '../models/userschema';

/* GET home page. */
router.get('/', function(req, res, next) {
    res.send("hello from the backend");
});

const newUser = {
    firstname:"Asim",
    lastname:"Dahal",
    email:"arsenalsim@gmail.com",   
    password:12321,
    cell_number:222,
    alternate_number:111
};

router.get('/insertuser', function(req, res, next) {

    var user = new User({
        firstname:"asim",
        lastname:"dahal",
        email:"arsenalasim@gmail.com",
        password:"12321", 
        cell_number:12321,
        alternate_number:12321
    });

    user.save((err) => {
        if(err) {
            console.log(err);
        }
        else {
            console.log('saved');
        }
    });
});

module.exports = router;

And this is my current userschema.js source code:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

var UserSchema = new Schema({
  firstname: {
    type: String,
    required: true
  },
  lastname: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  cell_number: {
    type: Number,
    required: true
  },
  alternate_number: {
    type: Number,
    required: true
  }
})
// var UserSchema = mongoose.model('User', UserSchema);
module.exports = mongoose.model(User,UserSchema)

Error occurs while importing the User Model. In api.js, replace :

var User = '../models/userschema';

by

var User = require('./models/userschema');

And in userschema.js, replace:

// var UserSchema = mongoose.model('User', UserSchema);
module.exports = mongoose.model(User,UserSchema)

by

var User =mongoose.model('User', UserSchema);
module.exports = User;

Follow the above steps and you will get "saved" printed on the console when you hit the "insertuser" endpoint.

var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;

var UserSchema = new mongoose.Schema({

     //Blabla.....

});

module.exports = mongoose.model('User', UserSchema);

And in your router

const User = require('../model/user');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM