50 레코드를 처리하는 이유는 누구에게 설명 할 수 있습니까?하지만 결코 콘솔에 console.log("all records processed");
이 표시되지 않습니다.Javascript를 사용하여 함수를 올바르게 종료하는 방법은 무엇입니까?
너무 빨리 또는 너무 늦게 함수를 닫는 것과 같습니다. 왜 내가 "all records processed"
을 얻지 못했는지 확신하기 때문에 콜백으로 작업 할 때 가장 좋은 방법은 무엇입니까? 노드 v0.10.26을 NPM 오라클 플러그인과 함께 사용하고 있습니다.
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
이것은 어둠 속에서 촬영되었지만 oracle.connect 내부에 포함하지 않고 루트 네임 스페이스에 doRead() 함수를 넣으려고 했습니까? –