mongodb - node.js如何使剩下的路由文件不执行?
为情所困
为情所困 2017-05-24 11:31:27
0
2
677

比如我要进行密码修改功能,有旧密码新密码,旧密码的验证与新密码的修改分开。请问如何使新密码的修改不执行?

router.get('/:userid', function(req, res,next) {
    if(req.session.userid){
        return next();
    }
    res.redirect('/login');
});
router.get('/:userid', function(req,res,next){
    User.find(req.session.userid,function(err,doc){
        res.render('changepassword',{
            userid: req.session.userid,
            user:doc
        });
    });
});

router.post("/:userid",function(req,res) {
    User.findOne({
        name: req.session.userid,
        pwd: req.body.oldpwd
    }, function (err, doc) {
        if (err) {
            r.error = err;
            return;
        }
        if (doc) {
            console.log('success');
        } else {
            console.log('fail');
            return;
        }
        res.json(r);
    });
});

//不想使得当旧密码验证不成功的时候让以下代码执行
router.post("/:userid",function(req,res) {
    var u = {
        pwd :req.body.pwd
    };
    var userid = req.session.userid;
    if(userid && '' != userid) {
        User.findOneAndUpdate(userid,u,function(err, docs) {
            console.log('modify-----'+ docs);
            res.redirect('/');
        });
    }
});
为情所困
为情所困

全部回复(2)
滿天的星座

回调函数的参数加上next,验证成功则next,验证失败则返回失败

router.post("/:userid",function(req,res,next) {
    User.findOne({
        name: req.session.userid,
        pwd: req.body.oldpwd
    }, function (err, doc) {
        if (err) {
            r.error = err;
            return;
        }
        if (doc) {
            console.log('success');
            return next();
        } 
        console.log('fail');
        res.json(r);
    });
});

//不想使得当旧密码验证不成功的时候让以下代码执行
router.post("/:userid",function(req,res,next) {
    var u = {
        pwd :req.body.pwd
    };
    var userid = req.session.userid;
    if(userid && '' != userid) {
        User.findOneAndUpdate(userid,u,function(err, docs) {
            console.log('modify-----'+ docs);
            res.redirect('/');
        });
    }
});

但其实可以合在一起,为什么要分开呢? 比如:

router.get('/:userid', function(req, res,next) {
    if(req.session.userid){
        return User.find(req.session.userid,function(err,doc){
            res.render('changepassword',{
                userid: req.session.userid,
                user:doc
            });
        });
    }
    res.redirect('/login');
});
为情所困

供参考:

1、router.post("/:userid",function(req,res) {

//不想使得当旧密码验证不成功的时候让以下代码执行
router.post("/:userid",function(req,res) {

是重复的router,你需要把下面这段处理代码(修改密码),放到上面去。

2、另外,可以考虑passwort.js做登录这块的管理。

供参考。

Love MongoDB! Have fun!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板