knex.js 数据库调用未完成

knex.js db call does not complete

我正在学习 node.js 并且遇到了 knex.js 和 bookshelf.js 与不同数据库的接口。我正在尝试 运行 一个简单的 knex 程序,但不知何故程序没有退出。下面是程序:

'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};
});

我调试了一下,发现knex使用的是bluebird promises。我的问题是由于未完全退出承诺造成的吗? 谢谢

这是因为与数据库的连接仍然打开。 在最后一个 .then( ... ) 之后添加以下代码,它将断开连接(从而退出该过程):

.finally(function() {
  knex.destroy();
})