NodeJS,将数据存储在MySQL和PostgreSQL的SQLite中

我创build了一个使用SQLite,Mysql和PostgreSQL的脚本。 我从PostgreSQL获取值,我使用它来调用一个MySQL,最后我将它存储在一个SQLite中。 SQLite然后用于其他应用程序。 我正在考虑每半小时运行一次node.js脚本作为cron作业。

这是我的代码: https : //jsfiddle.net/bjo93syg/

var pgPromise = require('pg-promise')(); var mysql = require('mysql'); var sqlite3 = require('sqlite3').verbose(); var pgConnection = pgPromise('postgres://my-user@localhost/my-db'); var mysqlConnection = mysql.createConnection({ host : 'localhost', user : 'my-user', password : 'my-pass', database : 'my-database' }); var sqliteConnection = new sqlite3.Database('test.db'); sqliteConnection.serialize(function () { sqliteConnection.run("BEGIN TRANSACTION"); sqliteConnection.run("DROP TABLE IF EXISTS numbers"); sqliteConnection.run("CREATE TABLE numbers (xnumber BIGINT)"); var stmt = sqliteConnection.prepare("INSERT INTO numbers VALUES (?)"); pgConnection.any('SELECT ...') .then(function(data) { for (var i = 0; i < data.length; i++) { mysqlConnection.query('SELECT ...?', [my_value], function (error, results, fields) { if (error) console.log(error); for (var j = 0; j < results.length; j++) { stmt.run(results[j].x); } stmt.finalize(); sqliteConnection.run("COMMIT"); sqliteConnection.close(); mysqlConnection.end(); // pgConnection is a lazy connection, ie only the actual query methods acquire and release the connection }); } }) .catch(function(err) { console.log(err); }); }); 

代码实际上似乎工作,但需要大约30秒运行。 当我将console.logs添加到代码中以查看需要花费的时间时,似乎所有数据库处理实际上都在一秒钟内运行,但整个node server.js大约需要30秒。

我是否需要closures某些东西,或者如何debugging正在占用的时间?

根据pg-promise的Library de-initialization注释,如所有示例中所示…

在处理结束时,调用pgPromise.end()来closures连接池,这样过程可以没有任何延迟地完成。