I'm trying to create a simple model in Mongoose except I keep getting a Missing Schema Error. I took a look around at some of the other solutions such as this and this except their solutions didn't work out for me. What am I doing wrong?
App.js
var mongo = require('mongodb');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/interactDB');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error: '));
db.once('open', function callback() {
var accountSchema = mongoose.Schema({
firstName: String,
lastName: String,
email: String,
studID: Number,
grade: Number,
password: String
});
var Account = mongoose.model('Account', accountSchema);
});
var routes = require('./routes/index');
var app = express();
Index.js
var express = require('express');
var router = express.Router();
var crypto = require('crypto');
var mongoose = require('mongoose');
var Account = mongoose.model('Account');
router.post('/register', function(req, res) {
var firstName = req.body.firstName;
var lastName = req.body.lastName;
var email = req.body.email;
var studID = req.body.studID;
var grade = req.body.grade;
var upass = firstName + " " + lastName;
var pass = crypto.createHash('md5').update(upass).digest('hex');
var student = new Account({ firstName: firstName, lastName: lastName, email: email, studID: studID, grade: grade, password: pass});
student.save();
});
module.exports = router;
Your code doesn't register the schema for Account until you've connected to the database which occurs after ./routes/index.js runs. You don't need to be connected to the database to register your schema, so change app.js to:
var mongo = require('mongodb');
var mongoose = require('mongoose');
var accountSchema = mongoose.Schema({
firstName: String,
lastName: String,
email: String,
studID: Number,
grade: Number,
password: String
});
var Account = mongoose.model('Account', accountSchema);
mongoose.connect('mongodb://localhost/interactDB');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error: '));
var routes = require('./routes/index');
var app = express();