所以我正在研究用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”永远不会被记录,这必然意味着它正在返回。有人能告诉我如何控制执行流程吗?
如果可以提供帮助,请提前感谢。