노드에 스케줄에 따라 실행하고 싶은 스크립트가 있습니다. 스크립트가 종료 중이거나 종료되지 않았습니다. 내 데이터베이스 클라이언트가 아직 열려 있기 때문에이 의심됩니다.node.js에서 포스트 그레스 (pg) 클라이언트 연결을 닫습니다.
var client = new pg.Client(conString);
client.connect();
function registerBundle (innerHash, outterHash) {
// some stuff here
}
var query = client.query("SELECT id, chain FROM mytable where \
state_ready = true and transaction_id='' ");
query.on('row', function(row) {
var chain = row['chain'];
var pg_record = row['id'];
console.log(pg_record);
var innerHash = "something";
var outerHash = "something else";
var registrar = registerBundle(innerHash, outerHash);
var update = client.query('UPDATE mytable SET transaction_id = $1::text \
where id=$2::int', [transactionHash, pg_record]);
console.log(chain);
});
다음을 포함하면 업데이트가 실행되기 전에 클라이언트 연결이 닫힙니다. 나는 registerBundle 기능이 완료 될 때까지 기다리는 시간을 모르기 때문에
query.on('end', function() {
client.end();
});
나는에서는 setTimeout 또는 임의의 다른 메커니즘을 사용할 수 없습니다. 또한 내가 업데이트가 완료되면 query.on ('끝'화재 것이라 생각합니다. 아니 이것을 테스트하는 방법을 잘.
내 질문에, 나는 위해 발사 일을해야합니다.
- 쿼리 DB
- 프로세스의 각 행 (query.on
- 값이 각 행 registerBundle에서 반환 된 업데이트 모든 행이 처리 된
- 닫기 DB 클라이언트/연결.
- 가 종료 스크립트와 출구 노드
파이썬/PHP 세계에서 꽤 똑바로 보이지만 떨어져 내 자바 스크립트 세계.
SELECT와 UPDATE 사이의 어느 곳에서나 업데이트에 필요한 값을 얻기 위해 javascript 함수를 호출해야합니다. var pg_record 바로 뒤에 함수를 호출 할 수 있습니까? –
@DavidAaronMcInnis 물론 가능합니다! :) –
이것을 실행하려고하면 "ReferenceError : data is defined"오류가 발생합니다. 이 작업을하기 위해 "a => {"를 "function (data) {"로 변경해야했습니다. 이것이 맞는지 확실하지 않습니다. –