728x90
반응형
node.js에서 statement의 run 쿼리 실행 시 error가 발생하면 노드 인스턴스가 다운되는 현상이 있었습니다.
기존 로직)
var stmt = db.prepare(insert_query_str);
for (let i=0; i<datas.length; i++) {
let value_list = [];
for (let j=0; j<key_list.length; j++) {
let key = key_list[j];
value_list.push(datas[i][key]);
}
stmt.run(value_list);
}
stmt.finalize();
resolve({ status: true, message: `Succees to bulk insert` });
발생한 에러)
{ Error: SQLITE_MISMATCH: datatype mismatch errno: 20, code: 'SQLITE_MISMATCH' }
왠지 callback으로 error를 받을 수 있을 것 같아서, 구글링 중에 아래 페이지에서 도움이 되는 문구 발견!
documentation 눌러서 들어오니 역시나 callback을 쓸 수 있더라고요~
https://github.com/mapbox/node-sqlite3/wiki/API#databasepreparesql-param--callback
그래서 아래와 같이 수정했습니다.
var stmt = db.prepare(insert_query_str, [], function(err) {
if (err) {
reject({ status: false, message: err });
return;
}
});
for (let i=0; i<datas.length; i++) {
let value_list = [];
for (let j=0; j<key_list.length; j++) {
let key = key_list[j];
value_list.push(datas[i][key]);
}
stmt.run(value_list, function(err) {
if (err) {
console.log(err);
reject({ status: false, message: err });
return;
}
});
}
stmt.finalize();
resolve({ status: true, message: `Succees to bulk insert` });
정상 동작~
728x90
반응형
'Programming > JavaScript & TypeScript' 카테고리의 다른 글
[Javascript VS Typescript] 자바스크립트와 타입스크립트 중 뭐가 더 좋을까 (0) | 2020.09.10 |
---|---|
node.js v8 getHeapStatistics() 각 값 단위 (0) | 2020.08.25 |
[NPM] forever 모듈 자체 로그 파일 생성하지 않음 (0) | 2020.07.29 |
[NPM] forever 모듈로 노드 서버 실행 시 메모리 사이즈(max-old-space-size) 설정하기 : forever start --max-old-space-size (0) | 2020.07.17 |
[Node-MongoDB] 인증(Authentication)이 추가된 MongoDB Client에 접속하기 (0) | 2020.06.09 |