任何人都可以向我解释为什么我正在处理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内? –