2016-07-21 22 views
1

Also habe ich versucht, dies seit einiger Zeit jetzt auszuarbeiten, und ich vermisse etwas hier. Ich versuche, die beste Vorgehensweise zum Einrichten von Routen in Express zu ermitteln. Ich möchte die verschiedenen Routen, die ich eingerichtet habe, nach Dateien trennen. Ich versuche, das Express Router-Modul zu verwenden, aber ich kann es nicht zum Laufen bringen. Hier ist meine Haupt-Server-Datei:Kann nicht mit 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')); 

Hier ist, sind die Routen für den Anwender:

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; 

Und hier ist die Form Ich versuche, mit schreiben:

<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> 

I Ich weiß, dass ich die Dateien nicht richtig benötige, aber das gibt mir einfach einen 404 Fehler.

Antwort

2

In Ihrer zweiten Datei nur anhören/route:

/* 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); 
}); 

Da Sie in Ihrer ersten Datei app.use hören ("/ Benutzer" ..)