(Node.js / Express.js)错误:架构尚未注册模型“文档”

我试图通过Dailyjs.com上的Nodepad教程(在此处find)工作。 当我尝试执行时,我最终停下来(在tut的第2步之后):

Error: Schema hasn't been registered for model "Document". Use Mongoose.define(name, schema) at Mongoose.model (/usr/local/lib/node/.npm/mongoose/1.0.16/package/lib/mongoose/index.js:138:13) at Object.<anonymous> (/root/Repos/nodepad/models.js:3:10) at Module._compile (module.js:374:26) at Object..js (module.js:380:10) at Module.load (module.js:306:31) at Function._load (module.js:272:10) at require (module.js:318:19) at Object.<anonymous> (/root/Repos/nodepad/app.js:10:16) at Module._compile (module.js:374:26) at Object..js (module.js:380:10) 

大多数情况下,我是一个完整的noob在这里,所以我真正需要的不是一个“做到这一点,使其工作”的答案,但如果你不介意,解释这个错误的实际原因是什么。 如果需要的话,我可以发布我现在的实际代码,如果这是一个令人痛苦的简单问题,请道歉。

models.js:

 var mongoose = require('mongoose'); mongoose.model('Document', { properties: ['title', 'data', 'tags'], indexes: ['title'] }); exports.Document = function(db) { return db.model('Document'); }; 

由于Mongoose 1.0,你必须以不同的方式定义你的模型。 要看到适用于nodepad,我build议阅读nodepad的源 (尤其是文件models.js )。

例:

 var mongoose = require('mongoose'), Schema = mongoose.Schema; var User = new Schema({ email: { type: String, index: { unique: true } }, name: String, lastseen: Date, isonline: Boolean, hashed_password: String, salt: String }); mongoose.model('User', User); 

令人遗憾的是,DailyJS教程的“较老的”博客post已经过时了。 Alex Youg确实发布了一些后续文章,将现有的教程迁移到Mongoose 1.0(它引入了非常多的API更改),请看这里 。