任何人都可以向我解释为什么我要处理50条记录,但我从未得到console.log("all records processed");
到控制台。
这就像我关闭一个功能太快或太晚。使用回叫时最好的方法是什么,因为我确信这就是为什么我没有得到"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");
});
});
答案 0 :(得分:0)
在connectData
的结束后,你没有分号会有什么不同吗?就我个人而言,我只是设置了越来越多的控制台日志,直到我弄清楚所有内容都搞乱了。那,或者如果可以的话,使用断点。
答案 1 :(得分:0)
对于这些逐步回调,我建议您使用async来管理回调金字塔。