我的代码有问题。我想从Mysql表中选择并考虑结果,对其进行更改并再次更新该表。问题是,代码会异步执行此操作,并且无法正常工作(首先执行所有SELECT,之后执行所有UPDATE)。因此,我使用async.js完成了工作,但仍然无法正常工作。因为我无法从调用者回调中传递出Selected值。因此,不可能通过async.waterfall将其传递给下一个回调。有什么想法吗?
async.waterfall([
function (callback) {
queryBuilder.selectAgent(connection, id, (agent) => {
// Here is the PROBLEM! I can't pass agent out of this
});
// Here agent will be undefined
callback(null, agent);
},
function (agent, callback) {
if (agent) {
// Some change on agent and pass it to next callback
}
callback(null, agent);
},
function (agent, callback) {
queryBuilder.updateAgent(connection, id, agent);
callback(null);
},
],
function (err) {
if (err) throw err;
})
答案 0 :(得分:0)
您需要在updateAgent
方法中进行更改以检查以前的值并向其中添加新数据,或者您可以先检查任何特定项目的更新,然后收集它们以一次更新该字段。