Я получаю «клиент не определен». Я вижу, что клиент не определен для функции, но я не уверен, как передать клиент в async. Я не думаю, что на самом деле возвращаю значение каждого из них для pg_commit или я?Передача переменных в другую функцию
В принципе, я хочу иметь массив запросов и цикл над ними и делать их запросы, а затем, когда все они совершают транзакции.
var pg_conn_str = "postgres://postgres:[email protected]/test2";
var pg = require ('pg');
var rollback = function (client, done) {
client.query ('ROLLBACK', function (err) {
return done (err);
});
};
var queries = ["INSERT INTO foo (bar) VALUES (4)",
"INSERT INTO foo (bar) VALUES (5)"];
pg.connect (pg_conn_str, function (err, client, done) {
if (err) throw err;
client.query ('BEGIN', function (err) {
if (err) return rollback (client, done);
process.nextTick (function() {
if (err)
console.log (err);
async.each (queries, pg_commit, function() {
client.query ('COMMIT', done);
console.log ('done');
});
}); //nextTick
}); //begin
}); //connect
function pg_commit (val) {
client.query (val, function (err) {
if (err) return rollback (client, done);
});
return (val);
}
O.K. поэтому я просматриваю анонимную функцию, вызывающую pg_commit. Кажется, что распечатывает то, что я хочу, но как мне получить обратный вызов, чтобы узнать, что все async.each завершены? – user983223
Из [async.each] (https://github.com/caolan/async#each) doc: '[third argument] - обратный вызов, который вызывается после завершения всех функций итератора или произошла ошибка. – raina77ow