无法访问NodeJs函数中的变量

时间:2016-06-17 18:33:49

标签: javascript node.js postgresql express npm

我正在使用NodeJS postgresql客户端通过它获取一些数据循环并提供输出。我正在使用ExpressJS和postgresql客户端。

这是我的代码

    var main_data = some array of data
    var user_info = {}
    for (var key in result.rows) {
      var user = main_data[key].user

      client.query('SELECT name,age,address FROM users WHERE user_id = $1 LIMIT 1;' , [user], function(queryErr, result){
        var return_data = result.rows[0]
        user_info.name = return_data.name
        user_info.gender = return_data.gender
        user_info.address = return_data.address
        main_data[key].user_info = user_info
     })
    }

    done()
    res.json(main_data)
    return

然而,当我运行此代码时,我没有得到正确的输出。 userinfo未被推送到main_data。它只是输出main_data变量,就像代码的开头一样。

建议重复并不简单 因为函数位于for循环中所以我不能只在函数完成后进行响应调用。我必须等到整个循环完成后才能完成1000多个循环才能完成响应调用。

告诉我如何实现它。 我做错了什么以及如何解决? 非常感谢你

1 个答案:

答案 0 :(得分:1)

我自己会使用async.js。

var rows = // your result.rows stuff.

function doTheQuery(item, callback){
   // your query logic here, calling the callback with the results
}

async.series(rows, doTheQuery, function(err){
   // handle any errors
}