如果使用回调,则节点js避免使用else

时间:2016-08-05 15:27:18

标签: node.js if-statement callback

我有2个。第一个我正在检查get参数是否存在。第二个我正在检查param1 == param2是否在这个条件下我会找到一个用户并在回调中重定向。

但是我必须为另一个案子设置其他因为我会得到:

Error: Can't set headers after they are sent.

有没有办法在我的情况下不写其他条件?例如,等待查找回调完成后,我可以执行重定向。

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

    if( typeof req.param('param1') != 'undefined' && typeof req.param('param2') != 'undefined){

        var param1 = req.param('param1');
        var param2 = req.param('param2');

        if ( param1 === param2 ){

            // Confirm the user
            User.findOne({ 'myfield' : param1 }, function(err, user) {
                if (err) throw err;

                if ( user.myfield == 'something' ){
                    return res.redirect('/login');
                }

                // Check if user already exists
                if (user){
                    user.field2 = 'anything';
                    // Update user status
                    user.save(function(err){
                        if(err) throw err;

                        return res.redirect('/register');
                    });
                }
            });
        }else{
            return res.redirect('/login');
        }
    }else{
        return res.redirect('/login');
    }
});

1 个答案:

答案 0 :(得分:2)

当然,如果您每次都明确返回,则可以避免使用else子句:

=SUM(COUNTIFS(B:B,B2,A:A,A2+{-1,0,1}))>1