在Expresspath文件中创build用户时出错

我正在创build一个节点应用程序,我正在遵循nodepad示例来创build我的用户。 但是,当我尝试打开我的/注册页面时,我正在尝试执行路由分离并遇到问题。

我的app.js文件看起来像这样:

var express = require('express'), app = express(), users = require('./routes/users'), http = require('http'), path = require('path'), mongoose = require('mongoose'), mongoStore = require('connect-mongodb'), util = require('util'), models = require('./models'), db, User, LoginToken, Settings = { development: {}, test: {}, production: {} }; /** * Environments */ app.configure('development', function() { db = 'mongodb://localhost/db-development'; app.use(express.errorHandler({ dumpExceptions: true })); app.set('view options', { pretty: true }); }); app.configure('test', function() { db = 'mongodb://localhost/db-test'; app.set('view options', { pretty: true }); }); app.configure('production', function() { db = 'mongodb://localhost/db-production'; }); console.log(db); /** * Models Definitions */ models.defineModels(mongoose, function() { app.User = User = mongoose.model('User'); app.LoginToken = LoginToken = mongoose.model('LoginToken'); }); mongoose.connect(db); /** * All environments */ app.configure(function() { app.set('port', process.env.PORT || 3001); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ url: db, secret: 'secret' })); }); ... // Sessions app.post('/sessions', sessions.index); app.get('/login', sessions.new); app.del('/sessions', loadUser, sessions.del); // Users app.get('/register', users.register); app.post('/users.:format?', users.registerprocess); ... 

然后,我的死logging文件看起来像这样:

 exports.register = function(req, res) { var user = new User(); res.render('users/new.jade', { flash: req.flash(), title: 'Register', bodyClass: 'registration', user: user}); }; exports.registerprocess = function(req, res) { var user = new User(req.body.user); function userSaveFailed() { req.flash('error', 'Account creation failed'); res.render('users/new.jade', { flash: req.flash(), title: 'Register', bodyClass: 'registration', user: user }); } user.save(function(err) { if (err) return userSaveFailed(); req.flash('info', 'Your account has been created'); // emails.sendWelcome(user); switch (req.params.format) { case 'json': res.send(user.toObject()); break; default: req.session.user_id = user.id; res.redirect('/'); } }); }; 

当我尝试去/注册,我得到以下错误:

 ReferenceError: User is not defined at module.exports.register (/Users/mmellado/workspace/project/routes/users.js:2:18) at callbacks (/Users/mmellado/workspace/project/node_modules/express/lib/router/index.js:161:37) at param (/Users/mmellado/workspace/project/node_modules/express/lib/router/index.js:135:11) at pass (/Users/mmellado/workspace/project/node_modules/express/lib/router/index.js:142:5) at Router._dispatch (/Users/mmellado/workspace/project/node_modules/express/lib/router/index.js:170:5) at Object.router (/Users/mmellado/workspace/project/node_modules/express/lib/router/index.js:33:10) at next (/Users/mmellado/workspace/project/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.methodOverride [as handle] (/Users/mmellado/workspace/project/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:49:5) at next (/Users/mmellado/workspace/project/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.logger (/Users/mmellado/workspace/project/node_modules/express/node_modules/connect/lib/middleware/logger.js:156:5) 

这使得我假设由于某种原因,用户架构不能从路由文件中find。 任何想法为什么这可能会发生?

您将用户放在应用程序对象上,但不要求在其他文件中。 我不知道为什么你select在你的app.js中定义你的模型,你应该在他们自己的文件中定义他们,他们不应该知道任何关于你的应用程序实例。 然后在你的路线上需要你的模型。 通过将模型放置在应用程序实例上,您可以创build紧密耦合,而实际上并不需要。

用户没有定义。 为什么你坚持用户到应用程序是任何人的猜测,但你需要做的是有你的路线的js文件中的app 。 你可以在那里要求。

编辑:看着这个例子。 在我的select它不是很好。 他们可以有一个更好的路线从控制器分离和mongoose模型导入一个非常奇怪的方式,你基本上必须定义他们两次。 它更混乱,那么它需要。

他们的榜样将是一个痛苦的屁股延长。 我会发现自己一些其他的例子。

(是的,我知道我没有太多的帮助,但是它的上午230和最好的build议,我可以给你的是远离这个废话,如果你刚刚开始与节点/mongoose/快递)