404在Express上尝试使用param进行生根时

时间:2014-05-30 22:07:22

标签: node.js express

在使用param生根时出现404错误,而在我的rootes / users.js文件中定义的所有其他根目录工作都很完美,例如我在调用时得到了所需的结果: localhost:3000 / users / users。 但是当我调用localhost时会得到404:3000 / users / users / 12315454这应该对应于我的users.js中的rooter / users:user_id(你可以在下面找到)

var express = require('express');
var router = express.Router();
var User   = require('../models/user');



    router.route('/users:user_id')
    .get(function(req, res) {
        console.log("attempting user");
        User.findById(req.params.user_id, function(err, place) {
            if (err)
                res.send(err);
            res.json(place);
        });
    })
    .put(function(req, res) {
        console.log("attempting to update user");
        User.findById(req.params.user_id, function(err, place) {

            if (err)
                res.send(err);

            user.username = req.body.name;
            user.visitedPlaces = req.body.visitedPlaces;
            user.likedItems = req.body.likedItems;
            //user.local.email= req.body.email;
            user.save(function(err) {
                if (err)
                    res.send(err);

                res.json({ message: 'user updated!' });
            });

        });
    })

    .delete(function(req, res) {
        User.remove({
            _id: req.params.user_id
        }, function(err, bear) {
            if (err)
                res.send(err);

            res.json({ message: 'Successfully deleted' });
        });
    });




    router.route('/users')

    // get all the users (accessed at GET http://localhost:8080/api/users)
    .get(function(req, res) {
        User.find(function(err, places) {
            if (err)
                res.send(err);

            res.json(places);
        });
    });



    router.route('/adduser')

    .post(function(req, res) {

        var user = new User();      
        user.password = user.generateHash (req.body.password);  // set the users name (comes from the request)
        user.username = req.body.username; 
        console.log(req.body)
        console.log("user name :"+req.body.username);
        user.save(function(err) {
            if (err)
                res.send(err);

            res.json({ message: 'user created!' });
        });


    });


module.exports = router;

我的app.js配置

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

var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var mongo = require('mongoskin');
var mongoose = require('mongoose');
var configDB = require('./config/database.js');
var port     = process.env.PORT || 3030;
var router = express.Router();  

// configuration ===============================================================
mongoose.connect(configDB.url); // connect to our database


 //Facebook app credentials
var FACEBOOK_APP_ID = '******09';
var FACEBOOK_APP_SECRET = '9a*******3';

//app secret for dev = 9adfcaa6d7989d8adc12852badcf69f3
// app ifd for dev = 492502667544609



var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'app')));
//var routes = require('./routes/index');
require('./config/passport')(passport); // pass passport for configuration
var users = require('./routes/users');
var places = require('./routes/places');



    // view engine setup
app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');

// set up our express application
app.use(logger('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser()); // get information from html forms

// required for passport
app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
app.use(passport.initialize());
app.use(passport.session());


 app.use(favicon());

//app.use(flash()); // use connect-flash for flash messages stored in session


    // Make our db accessible to our router  WARNING THIS MUST BE PUT before the rooting stuff above


app.use('/api', router);
app.use('/places', places);
app.use('/users', users);
 // routes ======================================================================
require('./routes/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport







app.get('/', function(req, res, next) {
  res.sendfile('./app/index.html');
});

/// catch 404 and forwarding to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

/// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

// test authentication
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { console.log("is authenticated");
  return next(); }
  console.log("not authenticated");
res.redirect('/')
}


// launch ======================================================================

console.log('The magic happens on port ' + port)

module.exports = app;

1 个答案:

答案 0 :(得分:2)

在您的路线中添加斜线,在users:user_id

之间
router.route('/users/:user_id')
                    ^---------here
相关问题