Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

knex.js db call does not complete

I am learning node.js and came across knex.js and bookshelf.js to interface with different databases. I am trying to run a simple knex program but somehow the program doesnt quit. Below is the program:

'use strict';
console.log('Getting knex');
var knex = require('./knex')({
  client: 'mysql',
  connection: {
    host: '127.0.0.1',
    user: 'shankhoneer',
    password: 'password',
    database: 'knex_test'
  }
});
debugger;
console.log('got knex');
knex.schema.createTable('users', function(table) {
  console.log('creating tables');
  table.increments('id');
  table.string('user_name');
}).then (function(msg){
  console.log('Completed creation');
  console.log(msg);
  return {inserted: true};
});

I tried to debug and found that knex uses bluebird promises. Is my problem due to incomplete exit from a promise? Thanks

like image 447
Shankhoneer Chakrovarty Avatar asked Mar 05 '15 02:03

Shankhoneer Chakrovarty


1 Answers

This is because the connection to the database is still open. Add the following code after your last .then( ... ) and it will disconnect (thus exiting the process):

.finally(function() {
  knex.destroy();
})
like image 143
victorkt Avatar answered Nov 09 '22 04:11

victorkt