2016-07-21 37 views
1

所以我一直在努力工作一段时间现在,我在这里失去了一些东西。我正在尝试确定在Express中设置路线的最佳做法。我想分开我通过文件设置的不同路线。我正在尝试使用Express Router模块,但我无法使其工作。这是我的主服务器上的文件:不能GET/POST与高速路由器()

var express  = require('express'); 
var handlebars = require('express-handlebars'); 
var path   = require('path'); 
var favicon  = require('serve-favicon'); 
var logger  = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

// Models 
var db   = require('./models/db.js'); 
var user   = require('./models/user.js'); 

// Routes/Controllers 
var routes  = require('./routes/index.js'); 
var userRouter = require('./routes/users.js'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.engine('handlebars', handlebars({ defaultLayout: 'main' })); 
app.set('view engine', 'handlebars'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

// Routing Table 
app.use('/', routes); 

// User 
app.use('/users', require('./routes/users')); 

这里是用户的路线:

var express  = require('express'); 
var userRouter  = express.Router(); 
var mongoose  = require('mongoose'); 
var bodyParser  = require('body-parser'); 
var methodOverride = require('method-override'); 

userRouter.use(bodyParser.urlencoded({ extended: true })); 
userRouter.use(methodOverride(function(req, res) { 
    if (req.body && typeof req.body === 'object' && '_method' in req.body) { 
     var method = req.body._method; 
     delete req.body._method; 
     return method; 
     }})); 


/* GET users listing. */ 
userRouter.get('/users', function(req, res, next) { 
    console.log('users GET'); 
     mongoose.model('User').find({}, function(err, users) { 
      if(err) { 
       console.error(err); 
      } else { 
       console.log(users); 
       res.render('users/index', { users: users }); 
      } 
      }); 
}) 
.post(function(req, res, next) { 
      console.log(req); 
}); 

module.exports = userRouter; 

,这里是我试图与发帖的形式:

<form name='create-users' action='/users' method='post' > 
    <h6>Create Account</h6> 
    <fieldset> 
    <label for='username'>User Name</label> 
     <input name='username' id='newname' type='text' placeholder='User Name'> 
     <label for='email'>Email</label> 
     <input name='email' id='email' type='text' placeholder='Email'> 
     <label for='newpassword'>Password</label> 
     <input name='password' id='newpassword' type='text' placeholder='Password'> 
     <button type='submit'>Create</button> 
    </fieldset> 
</form> 

我我知道我不需要这些文件,但这只是给我一个404错误。

回答

2

在你的第二个文件只是听/路线:

/* GET users listing. */ 
userRouter.get('/', function(req, res, next) { 
    console.log('users GET'); 
     mongoose.model('User').find({}, function(err, users) { 
      if(err) { 
       console.error(err); 
      } else { 
       console.log(users); 
       res.render('users/index', { users: users }); 
      } 
      }); 
}) 
.post('/', function(req, res, next) { 
      console.log(req); 
}); 

因为你在你的第一个文件app.use听( “/用户”。)