0
function runAll(){
    for (var i = 0; i < Math.random(); i++) {
        pool.connect(function(err, client, done) {
            client.query("update   box set gamer_id=null where  box_id=$1; ", [i], function(err, resultUpdate) {
                if(err)
                    return "has error"
                //when all query finished then return value
                return "finished all query";

            })
        })
    }

    return "after for";
}

This function all time return "after for" but i want when all query finished then return "finished all query" because these query may have some error.

how can return value when all query finished?

I can not use pg-promise for ...

vitaly-t
  • 24,279
  • 15
  • 116
  • 138
ashkufaraz
  • 5,179
  • 6
  • 51
  • 82
  • And why can't you use `pg-promise`? It would solve the problem easily. See: http://stackoverflow.com/questions/39537820/synchronous-query-with-node-and-postgresql – vitaly-t Sep 18 '16 at 13:39

1 Answers1

1

try this,

function runAll(cb){
    var total = Math.random()
    for (var i = 0; i < total; i++) {
        pool.connect(function(err, client, done) {
            client.query("update   box set gamer_id=null where  box_id=$1; ", [i], function(err, resultUpdate) {
                i==total-1 && cb(err, resultUpdate)
            })
        })
    }
}

console.log("before invoke of runAll")

console.time("dbprocess");
runAll(function allDone(err, res){
  console.log("after call of runAll completed");
  console.timeEnd("dbprocess");
  if(err)
      return "has error"
  //when all query finished then return value
  return "finished all query";

})

console.log("after invoke of runAll")

see also this SO for the timers in JS, https://stackoverflow.com/a/18427652/4466350

I don t feel like you need explanations about callback ect, but i may have wrong, just let us know.

Community
  • 1
  • 1