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.