Node.js API 与 Express 异步 : Trouble with multiple request

标签 node.js express asynchronous

我是 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);
            });
        },

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

最佳答案

第一个 waterfall 函数中的

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);
            });
        },

关于Node.js API 与 Express 异步 : Trouble with multiple request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37643633/

相关文章:

node.js - 读取lambda函数中exports.handler中未执行的dynamodb代码

javascript - 将参数传递给类构造函数

node.js - 如何从 MERN 堆栈 Web 应用程序项目中的 API 获取数据?

node.js - "No listeners detected"验证错误 Mongoose 和 Mocha

c# - 从同步方法调用异步方法

node.js - 如何在nodejs集群的master中创建服务器实例? (在 worker 和主人中)

javascript - 无法过滤嵌套的json对象

sql - 在 express 应用程序中续写原始查询

c# - 这个 TPL 习语存在吗?

有异步函数调用时的Javascript同步流程