带有异步表达式的Node.js API:多个请求有问题

带有异步表达式的Node.js API:多个请求有问题,node.js,express,asynchronous,Node.js,Express,Asynchronous,我是node.js新手,正在尝试创建一个小API。我使用Express进行路由,使用async.jc逐步处理调用。当只有一个请求进入时,这可以正常工作,但是当我尝试从我的机器发出2个或更多请求时,这个过程会混淆变量中的值并崩溃 以下是我的源代码的简短片段: router.get('/new', function (request, res) { async.waterfall([ function(callback) { // get a uni

我是node.js新手,正在尝试创建一个小API。我使用Express进行路由,使用async.jc逐步处理调用。当只有一个请求进入时,这可以正常工作,但是当我尝试从我的机器发出2个或更多请求时,这个过程会混淆变量中的值并崩溃

以下是我的源代码的简短片段:

router.get('/new', function (request, res) {
    async.waterfall([
        function(callback) {

            // get a unique domain
            client.spop('domainSet', function(err, domain) {
                userdata = {
                    email: 'user' + '@' + domain + '.' + mydomain,
                    password: randomstring.generate(10),
                    username: domain,
                    name: domain,
                    confirm: "false"
                }
                if (err) return next(err);
                callback(null, userdata, userdata.password);
            })

        },
        function(userdata, userpwd, callback) {
            myapp.users.create(userdata, function(user) {
                console.log('Creating new user: ' + userdata.email);
                callback(null, user, userpwd);
            });
        },

如何保持每个请求的“上下文/范围”?我确信我遗漏了一些东西(-:或者是我从同一台机器发出请求的唯一问题???

userdata
中的第一个瀑布函数需要在该函数中声明,否则它具有全局范围

router.get('/new', function (request, res) {
    async.waterfall([
        function(callback) {

            // get a unique domain
            client.spop('domainSet', function(err, domain) {
                var userdata = {
                    email: 'user' + '@' + domain + '.' + mydomain,
                    password: randomstring.generate(10),
                    username: domain,
                    name: domain,
                    confirm: "false"
                }
                if (err) return next(err);
                callback(null, userdata, userdata.password);
            })

        },
        function(userdata, userpwd, callback) {
            myapp.users.create(userdata, function(user) {
                console.log('Creating new user: ' + userdata.email);
                callback(null, user, userpwd);
            });
        },

第一个函数中的
userdata
没有在任何地方声明,因此它是全局范围。请尝试
var userdata={
ahhh;)谢谢-如果您根据您的评论创建答案,我将接受;)