如何使用NodeJs Async更新数据库中的数组数据?

时间:2019-02-17 13:11:30

标签: javascript node.js asynchronous async.js

我是NodeJ的新手,我发现JS的非阻塞和异步特性非常难以理解和处理,
我有一段代码应该迭代一个数组
并且对于每次迭代,我都应该进行数据库更新。

有人可以提供异步库功能的正确实现并帮助修复我的代码吗?

代码示例-

$users = DB::table('users')
                ->whereIn('id', [1, 2, 3])
                ->get();

2 个答案:

答案 0 :(得分:1)

在数据库查询调用期间,在成功查询中不会调用您的回调,因此导致您的代码永远不会到达最终的回调。

您将要在if (err) { return callback(err); }之后添加另一个return语句,以使异步知道您的数据库查询已完成。

还有另一件事,according to the docs,与每个方法的最终回调异步,在其回调中不调用结果。

  

所有iteratee函数完成或发生错误时调用的回调。用(err)调用。

因此,您不需要将值传递到iteratee函数中的回调语句中。

修改您的代码即可执行此操作。

conn.query(sqlQuery, sqlData, function (err, result) {
    if (err) {
        return callback(err);
    }

    return callback(null);
})

希望这会有所帮助。

答案 1 :(得分:0)

conn.query(sqlQuery, sqlData, async function (err, result) {
                if (err) {
                    return  await callback(err, false);
                }
            })

类似这样的事情..所以函数回调在这里async,我们给了await,实际上它一直等到返回调用结束。。