如何在Node.js中控制我的回调?

时间:2015-07-21 18:35:28

标签: node.js callback passport.js sequelize.js control-flow

所以我正在研究用CoffeeScript编写的应用程序,我正在使用Sequelize作为我的应用程序的ORM。我正处于集成Passport.js的阶段。但是,我遇到问题的部分是在尝试进行身份验证时让用户退出数据库。我知道问题是函数在我写的Sequelize函数返回之前有机会返回,但我无法弄清楚如何正确控制流程。

这是我到目前为止的代码: 用户模型

exports.getUserByUsername = (username, callback) ->
User.findOne({
    where : {
     username : username
    }}, (err, user) ->
    console.log 'hello?'
    return callback(err) if err
    return callback(undefined, user) if user
)

Hello没有被调用,因此知道它过早返回的步骤1。然后在护照策略中的验证回调中,我有这个:

(username, password, done) ->
    ChatModel.getUserByUsername username, (err, user) ->
        console.log 2
        return done err if err
        return done null, false, message: 'Incorrect user' if not user

        if ChatModel.isValidPassword user, password then return done null, user
    console.log 1

同样,“1”被记录到控制台,“2”永远不会被记录,这必然意味着它正在返回。有人能告诉我如何控制执行流程吗?

如果可以提供帮助,请提前感谢。

0 个答案:

没有答案