Mongoose Schemea MissingSchemaError:架构尚未注册模型

我正在构build我的第一个Web应用程序在MEAN堆栈中,并遇到与Mongoose有点麻烦。 我几乎完全从示例中提取代码,并尝试了类似问题上提供的所有build议,但仍然遇到同样的错误:

MissingSchemaError: Schema hasn't been registered for model "./models/Tests". Use mongoose.model(name, schema) at Mongoose.model (/Users/goldru/design-data/node_modules/mongoose/lib/index.js:332:13) at Object.<anonymous> (/Users/goldru/design-data/routes/index.js:16:21) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/Users/goldru/design-data/app.js:12:14) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/Users/goldru/design-data/bin/www:7:11) 

码:

app.js:

 //connect to db; require models var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/design-data-test'); var Test = require('./models/Tests'); var routes = require('./routes/index'); var users = require('./routes/users'); var express = require('express'); var app = express(); app.use('/', routes); app.use('/users', users); 

Tests.js:

 var mongoose = require('mongoose'); var TestSchema = new mongoose.Schema({ name: String }); mongoose.model('test', TestSchema); 

index.js:

 var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); /*GET test page.*/ router.get('/test', function(req, res, next) { res.render('test', { title: 'Express' }); }); //set up routes var mongoose = require('mongoose'); var Test = mongoose.model('./models/Tests'); router.get('/test', function(req, res, next) { Test.find(function(err, tests) { if(err) { return next(err); } res.json(tests); }); }); router.post('/test', function(req, res, next) { var test = new Test(req.body); Test.save(function(err,post) { if(err) { return next(err); } res.json(test); }); }); module.exports = router; 

任何build议将非常感激。

你命名模型test

 mongoose.model('test', TestSchema); 

所以如果你想通过名字来引用它,你必须使用相同的名字:

 var Test = mongoose.model('test'); 

我build议将模型名称重命名为Test ,这是Mongoose约定(不是要求,虽然)。 我也会从你的模型文件中导出它:

 var mongoose = require('mongoose'); var TestSchema = new mongoose.Schema({ name: String }); module.exports = mongoose.model('Test', TestSchema);