整齐的回调node.js

时间:2013-02-24 20:11:58

标签: node.js callback express redis

试着想出一种结构化的逻辑方法。为简单起见,我正在使用Node.js,Redis和Express.js创建用户注册页面。

用户将详细信息发布到页面。

确认用户名有效,然后Redis检查用户名是唯一的。如果是,我们继续,如果不是,我们将返回错误消息和所有先前的详细信息。

确认密码有效。如果不是,则返回错误,我们不会继续。

确认电子邮件与Redis是唯一的。如果是我们继续,如果不是,我们将返回错误消息并停止。

如果此时没有错误,则将数据插入Redis。

这看起来很简单,但是使用回调已经产生了一团糟 - 特别是当它返回错误时。

如何以整洁的方式构建它?

1 个答案:

答案 0 :(得分:1)

你所经历的是回调地狱。您可以执行各种操作,例如命名回调函数而不是内联它们,遵循相同的模式等...

但是,我建议您查看the async module

在你非常典型的情况下,我会使用async.series:

var validateUserName = function(username, callback){
  if(username!='valid'){
    return callback('invalid username');
  }
};
var checkRedis = function(username, callback){
  // check to redis
};
var checkPassword = function(password, callback){
  // if password valid callback();
  // else callback('invalid password');
}
etc...

async.series([checkUserName, checkRedis, checkPassword, etc...], next);