node.js - Cannot GET/POST with express Router() -


so i've been trying work out time , i'm missing here. i'm trying determine best practice setting routes in express. i'd separate different routes have setup file. i'm trying use express router module, can't work. here main server file:

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 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' )); 

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

and here form i'm trying post with:

<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'm know i'm not required files properly, giving me 404 error.

in second file listen / route:

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

since listening in first file app.use("/users"..)


Comments