8

私は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 の promise を使用していることがわかりました。私の問題は、プロミスからの不完全な終了によるものですか? ありがとう

4

1 に答える 1

20

これは、データベースへの接続がまだ開いているためです。最後のコードの後に​​次のコードを追加する.then( ... )と、接続が切断されます (プロセスが終了します)。

.finally(function() {
  knex.destroy();
})
于 2015-03-05T03:16:15.687 に答える