任何人都可以向我解釋爲什麼我正在處理50條記錄,但我從來沒有得到console.log("all records processed");
到控制檯。如何確保您使用Javascript正確關閉您的函數?
這就像我正在關閉一個功能太早或太晚。使用回電時最好的方法是什麼,因爲我確信這就是爲什麼我沒有得到"all records processed"
。我正在使用節點v0.10.26與NPM oracle插件。
var oracle = require('oracle');
var connectData = {
hostname: "127.0.0.1",
port: 1521,
database: "xe", // System ID (SID)
user: "user",
password: "password"
};
oracle.connect(connectData, function(err, connection) {
if (err) {
console.log("Error connecting to db:", err);
return;
}
connection.setPrefetchRowCount(50);
var reader = connection.reader("SELECT * FROM CARS", []);
function doRead(cb) {
reader.nextRow(function(err, row) {
if (err) return cb(err);
if (row) {
// do something with row
console.log("got " + JSON.stringify(row));
// recurse to read next record
return doRead(cb)
} else {
// we are done
return cb();
}
});
}
doRead(function(err) {
if (err) throw err; // or log it
console.log("all records processed");
});
});
似乎你的代碼沒有錯,也許'行'總是'真理'? –
沒有它最奇怪的事情,你拿出最後一個命令console.log(「所有記錄處理」);並且預取行可以正常工作,但連接並未關閉,必須在某處需要分號! – justZito
這是在黑暗中拍攝的,但是您是否嘗試將doRead()函數放入根名稱空間中,而不是將其嵌入到oracle.connect內? –