피드관리 - Part 1 피드작성 (4) 이미지와 해시태그를 제외한 정보 입력

Project Diary/React + MariaDB (PicShare WebApp)

이 글에서는 피드를 작성할 때 이미지와 해시태그를 제외한 나머지 정보를 데이터베이스에 저장하는 과정을 다룹니다. 여기에는 게시물의 생성 및 예약 시간, 위치, 날씨 정보 등을 포함합니다.


 

데이터베이스

 

  • scheduled_at : 예약 시간
  • created_at : 생성 시간
  • updated_at : 업데이트 시간(초기값은 생성 시간과 동일)

 

프론트

 

1. 데이터베이스에 저장하기 전 데이터 처리

const createdAtValue = scheduled_at ? scheduled_at : new Date();
const scheduledAtValue = scheduled_at ? scheduled_at : null;
const Weather = weather.replace(/['"\\]+/g, "");
  • createdAtValue : scheduled_at 값이 존재하면 이를 사용하고, 그렇지 않으면 현재 시간을 사용합니다.
  • scheduledAtValue : scheduled_at 값이 존재하면 이를 사용하고, 그렇지 않으면 null을 사용합니다.
  • Weather: 날씨 정보에서 특수 문자를 제거합니다.

 

백엔드

 

1. 데이터베이스에 저장

db.query(
  `INSERT INTO posts (userNo, content, scheduled_at, created_at, updated_at, locationName, weatherInfo, weathericon) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
  [
    userNo,
    content,
    scheduledAtValue,
    createdAtValue,
    createdAtValue,
    locationName,
    Weather,
    weathericon,
  ],
  (err, result) => {
    if (err) {
      console.error("post 인서트 에러:", err);
      return res.json({ message: "서버 오류가 발생했습니다." });
    }
    const postId = result.insertId;

    // 이후 이미지와 해시태그 저장 로직...
  }
);

 

 


예시

"Seoul" 위치에서 "맑은 날씨"에 대한 게시물을 작성
INSERT INTO posts (userNo, content, scheduled_at, created_at, updated_at, locationName, weatherInfo, weathericon) VALUES (1, '맑은 날씨', null, '2024-07-30 12:00:00', '2024-07-30 12:00:00', 'Seoul', 'clear sky', '01d');​