节点> Expressjs res.render不重定向

时间:2013-12-03 20:28:15

标签: node.js express

我正在使用nodejs和express开发应用程序。我有登录页面。我发布用户数据,如果没有用户使用该数据,那么我想重定向页面。但res.render没有工作(我添加了评论res.render在我的代码中,如“//重定向,如果用户没有找到”。不知道。这是我的代码:

var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/fuatblog");
var UserSchema = new mongoose.Schema({
    name: String,
    email: String,
    password: String,
    age: Number
}),
    Users = mongoose.model('Users', UserSchema);
app.post('/sessions', function (req, res) {

    console.log(req.body.user.email);
    console.log(req.body.user.password);
    Users.find({
        email: req.body.user.email,
        password: req.body.user.password
    }, function (err, docs) {
        if (! docs.length) {
            // no results...

            console.log('User Not Found');
            //res.status(400);
             //Redirect if user not found
             return res.render(__dirname + "/views/login", {
                    title: 'Giriş',
                    stylesheet: 'login',
                    error: 'Email or password is wrong.'
                });
        }

        console.log('User found');
        req.session.email = docs[0].email;
        console.log(req.session.email);
    });

    return res.redirect('/Management/Index');    
});

1 个答案:

答案 0 :(得分:5)

无法识别用户时要调用的.render方法是异步代码。这意味着一旦请求到达您的服务器,就会调用return res.redirect('/Management/Index');。但是,一旦从Users.find得到结果,就应该这样做。即:

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

    console.log(req.body.user.email);
    console.log(req.body.user.password);
    Users.find({
        email: req.body.user.email,
        password: req.body.user.password
    }, function (err, docs) {
        if (! docs.length) {
            // no results...
            console.log('User Not Found');
            //res.status(400);
             //Redirect if user not found
             return res.render(__dirname + "/views/login", {
                title: 'Giriş',
                stylesheet: 'login',
                error: 'Email or password is wrong.'
            });
        }
        console.log('User found');
        req.session.email = docs[0].email;
        console.log(req.session.email);
        return res.redirect('/Management/Index');
    });

});