1
我想解析文件與數據並將其插入數據庫中,解析順利,當我做一個查詢它運行良好,但是當我試圖讓這個查詢工作在循環它給我異步查詢到數據庫在nodeJS
values: [output[i][0], output[i][1], output[i][2], output[i][3], o
^
TypeError: Cannot read property '0' of undefined
首先,我是想簡單的for循環,但約是的NodeJS異步我發現我需要做的這個回調經過一番研究,但它沒有工作,我認爲解析未完成通過啓動查詢例程的時刻,但我不確定。
var express = require('express');
var pg = require('pg');
var csv = require('fast-csv');
var app = express();
var conString = "postgres://alexzander:,[email protected]/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);
});
現在錯誤消失,但沒有插入數據庫中
試圖改變parser.on( 「結束」,查詢(1))到parser.on( 「結束」,執行console.log(輸出))來檢查你有正確的數據,您conString有一個逗號後亞歷山大:我不認爲它應該是有 – Molda 2015-04-06 08:30:26
@Molda逗號密碼 和執行console.log(輸出)的一部分: [] events.js:130 擲類型錯誤(「監聽器必須是一個函數「); 他認爲console.log不是一個函數? 但陣列是由於某種原因爲空 – Alexander 2015-04-06 08:37:45
@Molda parser.on(「end」,function(){ console.log(output); }); 運作良好,我得到: [[ '1', 'Агафонова', 'Анна', 'Игоревна', 'Архангельск,Гайдараул,61'], [ '2', ' Акимова', 'Мария', 'Максимовна', 'Архангельскаяобласть,Вилегодскийрайон,с。 Ильинско-Подомское,25' ], [ '3', 'Алькин', 'Руслан', 'Валерьевич', 「Архангельскаяобласть,Вельск,пер。 Макаренко,14']等等.... – Alexander 2015-04-06 08:41:37