繁体   English   中英

Node.js async.waterfall回调参数不匹配?

[英]Nodejs async.waterfall callbacks argument mismatch?

我正在尝试使用async.waterfall依次对数据库执行查询,以便在发生错误时可以回滚所有查询。 下面是我的代码:

 function _getDBConnection(callback) { try { dbService.getConnection(function(connection) { callback(null, connection); }); } catch (e) { callback(e, null); } } function _insertNewUser(newUser, connection, callback) { if (connection) { var query = 'somequery'; // Start a transaction connection.beginTransaction(function(error) { if (error) { callback(error, connection, null); } // Fire the query connection.query(query, function(error, result) { if (error) { callback(error, connection, null) } else { callback(connection, newUser, result.insertId); } }); }); } else { callback('Error: no connection in ', null, null); } }; module.exports.doRegister = function(req, res) { // Collect all the params coming from the UI. var newUser = {'object with UI params'}; console.log("Trying to register the user..."); async.series([ _getDBConnection, async.apply(_insertNewUser, newUser) ], function(err, success) { if (err) { console.log(err); } else { res.status(200).json({ success: true, message: 'User registeration successfully.' }); } }); }; 

问题:我没有从_getDBConnection函数正确接收到第二个函数(_insertNewUser)的连接对象。 由于未定义,因此出现以下错误。

TypeError:connection.beginTransaction不是函数~~~~堆栈跟踪~~~~错误:回调已被调用~~~~堆栈跟踪~~~~

我认为我正在获得“回调”功能而不是_insertNewUser函数中的连接对象,这是不期望的。 我究竟做错了什么?

如果很重要,在_insertNewUser之后我还有其他函数/查询被调用,但是为了简洁起见,我从代码中删除了它们。

如我所见,您正在使用async.series。 可能应该使用async.waterfall将一个函数的结果传递给另一个函数。

Node.js异步系列-将参数传递给下一个回调

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM