피드관리 - 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');