Отменить потоковый запрос postgres в knex.js - PullRequest
0 голосов
/ 04 июня 2019

Есть ли способ отменить потоковый длительный запрос в knex.js?Пробовал stream.emit('close'), но, похоже, он не закрывает запрос, так как вызов knex.destroy() никогда не разрешается.

const query = knex('tablename')
const stream = query.stream({ batchSize: 2000 })

process.on('SIGINT', () => stream.emit('close', 128 + 2))
process.on('SIGTERM', () => stream.emit('close', 128 + 15))

stream
  .on('data', onData)
  .on('close', (exitCode = 0) => {
    knex.destroy()
      .then(() => console.log('This is never resolved if the query has finished'))
      .catch(err => console.error('could not close connection gracefully', err))

    console.log('Finished')
    process.exitCode = exitCode
  })
  .on('end', () => {
    console.log('End')
    stream.emit('close')
  })
...