IT/Electron

[Electron] 일렉트론 sqlite3 연동 , Sqlite3 insert 시 무한 루프 발생

월공 2021. 3. 16. 09:19
728x90
300x250

일렉트론 소스 변경시 바로바로 적용이 되게 하려고 main.js 상단에 아래와 같은 소스를 넣어놨었다.

require('electron-reload')(__dirname, {
        electron : require(`${__dirname}/node_modules/electron`)
})

근데 위 소스가 후에 내게 빅엿이 될줄은 상상도 못했다 ..

 

sqlite3 를 연동하고나서 insert 구문을 테스트하는데 페이지가 미친듯이 무한새로고침이 되는게 아닌가 ..

다른것도 아니고 db insert 할때 그모양이 되니 난리도 아니다

ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

결국 상단에 자동새로고침 소스 주석 처리해주니 한번만 실행 되면서 잘 들어간다 ..

 

main.js

const { app, BrowserWindow, Menu } = require('electron');
/*
require('electron-reload')(__dirname, {
        electron : require(`${__dirname}/node_modules/electron`)
})
 */

Menu.setApplicationMenu(false)

function createWindow () {
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: false,
    }
  });
  win.webContents.openDevTools();  
  win.loadFile('index.html');  
}

app.on('ready', createWindow);


const scripts = require('./script.js');
const { ipcMain } = require('electron')

ipcMain.on('insert', (event, arg, arg2) => {
  console.log("=================main.js=================");
  scripts.insert(arg, arg2);
});

script.js

const sqlite3 = require('sqlite3').verbose();

let isConn = false;
let db = new sqlite3.Database('./data/DB.db', sqlite3.OPEN_READWRITE, (err) => {
  if (err) {
    console.error(err.message);
  } else {
    console.log('Connected to the DB database.');  
    isConn = true;
    db.run('CREATE TABLE IF NOT EXISTS TEST ( IDX INTEGER PRIMARY KEY, NAME TEXT, DESC TEXT, DATE TEXT )',[], arg=>{
      console.log('create',arg);
    });
  }
});


module.exports.insert = function(arg, arg2){
  if (isConn) {    
        db.run('INSERT INTO TEST(NAME,DESC,DATE) VALUES(?,?,datetime("now"))', [arg, arg2], (err) => {
          //console.log(`A row has been inserted with rowid ${this.lastID}`);
          if (err) {
            return console.log(err.message);
          }
        });
  }
};

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>일렉트론 Sqlite 테스트</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<!-- <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> -->
</head>

  <body>
      <a href='other.html'>Next</a>
  </body>
</html>

<script>
  const { ipcRenderer } = require('electron');

  ipcRenderer.send('insert', '제목 테스트', '내용 테스트');

</script>

728x90
300x250