MissingSchemaError:Schema尚未注册模型" Account"

时间:2014-07-30 17:45:39

标签: node.js mongodb mongoose

我正在尝试在Mongoose中创建一个简单的模型,除了我不断收到一个Missing Schema Error。我浏览了一些其他解决方案,例如thisthis,除了他们的解决方案对我没有用。我做错了什么?

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;

1 个答案:

答案 0 :(得分:1)

Account运行后连接到数据库之前,您的代码不会注册./routes/index.js的架构。您无需连接到数据库即可注册架构,因此请将app.js更改为:

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();