带有PostgreSQL的NodeJs DataPump:进程挂起

时间:2017-06-02 11:05:09

标签: javascript node.js postgresql etl datapump

您好我三天前开始学习node.js而且我一直在尝试使用数据泵。到目前为止,我正在使用Express运行节点js,问题是我的进程函数永远不会运行。我在日志中看到这个console.log("Ready To Pump");所以我能够告诉函数被调用。然而,似乎这个过程仍然悬而未决。 (不确定)。未调用过程函数,因为console.log("We are in the Process");部分代码未显示在日志中。我在哪里出错了我也知道我的连接字符串有效,因为我有另一个使用相同查询并将数据记录到控制台的功能。我打算将数据从一个postgre数据库传输到另一个。如果从未调用过程函数,我当然不能这样做。我也没有在控制台中出现任何错误。我相信它会挂起,因为console.log("Done");没有显示

var dpumps =require('datapumps');
Pump = dpumps.Pump;
PostgresqlMixin= dpumps.mixin.PostgresqlMixin;
QueryStream = require('pg-query-stream');
Client = require('pg').Client;

var con = {
    host: 'localhost',
    port: 5432,
    database: 'mydatabase',
    user: 'myuser',
    password: 'mypass'
};

postgresqlClient = new Client(con) ;

exports.pump = function () {
    console.log("Ready To Pump"); //This logs so i know the function is called.
    postgresqlCopy = new Pump()
        .from(postgresqlClient.query(new QueryStream("SELECT $1~, $2~, $3~ FROM $4~ LIMIT 10",["RowId", "Company", "ArticleNo", "Article"])))
        .mixin(PostgresqlMixin(postgresqlClient))
        .process(function(data) {
            console.log("We are in the Process");
            return postgresqlCopy.log(data) ;
        })
        .logErrorsToConsole()
        .run()
        .then(function() {
            console.log("Done");
            console.log(postgresqlClient)
        });

};

我指的是this我认为虽然存在一些语法错误

1 个答案:

答案 0 :(得分:0)

.catch(console.error)之后添加then(),这样您就会看到是否有一些未处理的错误