【问题标题】:Routing Error with Not Defined Model Property未定义模型属性的路由错误
【发布时间】:2014-07-11 01:10:19
【问题描述】:

我遇到了 Express 4 的路由问题,这与我为我的 mongoose 模式创建的属性有关。出于某种原因,当我尝试 POST 请求时,我收到了一个未定义描述的参考错误。我是否搞砸了我的路线请求?

错误:

ReferenceError: description is not defined
at Object.handle (/Users/user/Desktop/Projects/node/travelApp/app/routes.js:47:5)
at next_layer (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/route.js:103:13)
at Route.dispatch (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/route.js:107:5)
at c (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/index.js:195:24)
at Function.proto.process_params (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/index.js:251:12)
at next (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/index.js:189:19)
at next_layer (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/route.js:77:14)
at next_layer (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/route.js:81:14)
at next_layer (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/route.js:81:14)
at Route.dispatch (/Users/user/Desktop/Projects/node/travelApp/node_modules/express/lib/router/route.js:107:5)

destination.js

 var mongoose   =   require('mongoose');
var Schema      =   mongoose.Schema;

var DestinationSchema   =   new Schema({
    tite:   String,
    description:    String,
    topOne:     String,
    topTwo:     String,
    topThree:   String,
    topFour:    String,
    topFive:    String
});

module.exports  =   mongoose.model('Destination', DestinationSchema);

routes.js:

module.exports = function(app, passport, Destination) {



    app.get('/', function(req, res) {
        res.render('index.ejs')
    });

    app.get('/login', function(req, res) {

        res.render('login.ejs', {   message: req.flash('loginMessage')  });
    });

    app.post('/login', passport.authenticate('local-login', {
        successRedirect :   '/profile',
        failureRedirect :   '/login',
        failureFlash    :   true
    }));

    app.get('/signup', function(req, res) {
        res.render('signup.ejs', {  message: req.flash('signupMessage') });
    });

    app.post('/signup', passport.authenticate('local-signup', {
        successRedirect :   '/profile',
        failureRedirect :   '/signup',
        failureFlash    :   true
    }));

    app.get('/profile', isLoggedIn, function(req, res) {
        res.render('profile.ejs', {
            user    : req.user
        });
    });

    app.get('/destinations', isLoggedIn, function(req, res) {
                res.render('destinations.ejs', {
                user    :   req.user
                });
            });

    app.post('/destinations', function(req, res) {

                var destination = new Destination();
                destination.name = req.body.name,
                destination.description = req.body.description,
                description.topOne = req.body.topOne,
                description.topTwo = req.body.topTwo,
                description.topThree = req.body.topThree,
                description.topFour = req.body.topFour,
                description.topFive = req.body.topFive;

                destination.save(function(err){
                    if (err)
                        res.send(err);

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

            });

    app.get('/logout', function(req, res) {
        req.logout();
        res.redirect('/');
    });





};




function isLoggedIn(req, res, next) {

    if(req.isAuthenticated())
        return next();

    res.redirect('/');
}

【问题讨论】:

    标签: node.js express routing mongoose


    【解决方案1】:
    destination.name = req.body.name,
    destination.description = req.body.description,
    description.topOne = req.body.topOne,
    description.topTwo = req.body.topTwo,
    description.topThree = req.body.topThree,
    description.topFour = req.body.topFour,
    description.topFive = req.body.topFive;
    

    有些是destination,有些是description。根据您上面的代码,我相信他们都应该是destination

    【讨论】:

    • 是的。这纠正了我的问题。永远不要依赖自动更正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2020-04-21
    • 2015-10-22
    • 2019-11-15
    • 2017-11-23
    • 2018-06-27
    • 2020-02-12
    相关资源
    最近更新 更多