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
Post a Comment