본문 바로가기

TIL

DB에 문자열 형태로 시간 값을 저장했다가 수정.(03281530)

spf mailalarm 프로젝트 중

이벤트 로그를 DB에 저장하고 이를 불러와서 보여주는 페이지를 만들었다. 

이벤트 발생 시 시간 값을 추출해 DB에

이런 형식으로 저장을 했었다.

 

justin: 이러면 나중에 이벤트 로그 페이지에서 시간별로 조회를 하거나 할 때 쿼리를 만들 수 없다. 

사용자에게 보여줄 때는  yyyy-mm-dd hh:mm:ss 이런 형태, DB에 저장할 때는 timestamp 같은 형태로 저장하자. 

 

1. event log에서 time 값을 가져와 timestamp 형태로 DB에 저장. 

 

ws.on('message', function message(data) {        
        strData = data.toString('utf-8')
        // console.log('strData', strData)
        const parsedResData = JSON.parse(strData);

웹소켓으로 실시간 이벤트를 받고 있다. 

- JSON으로 파싱. 

const visitTime = parsedResData.Event.server_datetime

파싱한 데이터에서 이벤트 발생 시간 변수에 저장. 

async function sendSMTP(authUserID, time, place) {
    const originalDate = time;
    const dateObject = new Date(originalDate);
    let visitTime = dateObject

 

시간 변수를 sendSMTP 함수에서 받아 tiemstamp 객체로 만든다. 

이 객체는 다시 visitTime  라는 변수에 저장하고. 

메일을 정상적으로 보낸 후 DB에 timestamp 형태의 visitTime 변수를 저장한다. 

const insertEventLog = {
                                    time: visitTime,
                                    userID: authUserID,
                                    name: userName,
                                    email: guardian,
                                    device: visitPlace
                                };            
                                const LogValues = Object.values(insertEventLog);
                                var eventLog_insert = 'INSERT INTO spf_event (time, userID, name, email, device) VALUES (?,?,?,?,?)'
                                db.run(eventLog_insert, LogValues, function(err) {
                                    if (err) {
                                        console.error('이벤트 로그 추가 중 오류 발생:', err.message);
                                    } else {
                                        console.log('이벤트 로그 추가 성공');
                                    }
                                });

 

 

 

반응형