asynchronous查询到nodeJS中的数据库

我试图parsing与数据文件,并将其插入数据库中,parsing顺利,当我做一个查询它运行很好,但是当我试图让这个查询工作在循环中它给我

values: [output[i][0], output[i][1], output[i][2], output[i][3], o ^ TypeError: Cannot read property '0' of undefined 

首先,我试图简单的循环,但经过一些关于nodeJSasynchronous的研究,我发现我需要在callback中做到这一点,但它没有奏效,我认为parsing不是通过启动查询例程的时刻完成的,米不确定。

 var express = require('express'); var pg = require('pg'); var csv = require('fast-csv'); var app = express(); var conString = "postgres://alexzander:,tjdekma@localhost/db2015"; var output = []; var client = new pg.Client(conString); parser = csv.fromPath("public/dataInputOld/tblOwner.txt", {delimiter: ';'}); parser.on("data", function (data) { output.push(data); }); parser.on("end", query(1)); function query(i) { if (i < 30) { client.query({ text: 'INSERT INTO tblowner ' + '(intownerid, txtownersurname, txtownername, txtownersecondname, txtaddress)' + ' VALUES ($1, $2, $3, $4, $5)', values: [output[i][0], output[i][1], output[i][2], output[i][3], output[i][4]] }, function (err) { if (err) { console.log('error: ' + err) } else { console.log(i); query(i + 1); } }); } } app.get('/', function (req, res) { res.send(JSON.stringify(output[1][0])); }); var server = app.listen(3001, function () { var host = server.address().address; var port = server.address().port; console.log('App listening at http://%s:%s', host, port); }); 

更新:现在我认为我没有很好地连接到数据库

Update2:我改变了

  parser.on("end", query(1)); 

 parser.on("end", function(){ query(1); }); 

现在错误消失了,但没有在数据库中插入

结束了这个,对不起,但我不明白关于pg和获取客户端,所以当我做了所有的例子在那里的文档都工作正常,谢谢stackoverflow :)如果我没有试图解释这个麻烦你认为我可能会在更多的时间里寻找错误。

 parser.on("end", function () { client.connect(function(err){ if (err) { return console.error('could not connect to postgres', err); } query(1); }); }); function query(i) { if (i < 30) { client.query({ text: 'INSERT INTO tblowner ' + '(intownerid, txtownersurname, txtownername, txtownersecondname, txtaddress)' + ' VALUES ($1, $2, $3, $4, $5)', values: [output[i][0], output[i][1], output[i][2], output[i][3], output[i][4]] }, function (err) { if (err) { console.log('error: ' + err) } else { console.log(i); query(i + 1); } }); }else{ client.end(); } }