这里我正尝试将数据推入我的数组,但它始终为空。
read_file: ['pass_fileData', function (result, cb) {
let obj = [];
async.each(result.pass_fileData, function (item) {
knex
.select('xxxxx')
.from('xxxx')
.innerJoin('xxxx', 'xxxx', 'xxx')
.where('xxxxx', '=', item)
.then(function (data) {
obj.push(data) // here I am pushing data to array
})
.catch(function (err) {
cb(err);
})
})
cb(null, obj)
}]
在CB(null, obj)
中,我没有任何数据,但是在控制台时,我是从数据库中获取数据。
因为您的功能是异步的。这意味着当我调用您的回调cb
时,数据还不存在。您希望在每个异步函数执行后调用回调。
[async.each
可以采用第三个参数,这是在函数完成后将被调用的回调。
您的代码应如下所示:
async.each