1
我正在编写一些PostgreSQL事务,并且我需要执行一次回调,forEach中的每个函数都已执行。下面是一些代码:执行回调一次每个异步任务完成forEach
var sql = "BEGIN;UPDATE object SET name = "+data.name+", object_subtype_id = "+data.object_subtype_id+" WHERE id = "+data.id+";";
db.driver.execQuery(sql, function(err, result) {
data.object_subtype.object_property_type.forEach(function(item) {
db.driver.execQuery("WITH upsert AS (UPDATE object_property SET value = '"+item.value+"' WHERE object_property_type_id = "+item.id+" AND object_id = "+data.id+" RETURNING *) INSERT INTO object_property (object_property_type_id, object_id, value) SELECT "+item.id+", "+data.id+", '"+item.value+"' WHERE NOT EXISTS (SELECT * FROM upsert);", function(err, nb) {
// I need to send the COMMIT; here once all the functions in the forEach have been executed
});
});
});
我在async了一下,但我不知道怎么样,还是我,它适用于我的情况。
有什么想法吗?
谢谢!