인프런 커뮤니티 질문&답변

travelc2bd3님의 프로필 이미지

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

해시태그 등록하기

해시태그 오류 질문입니다.

21.01.23 21:10 작성

·

243

0

한 게시글에서 동일한 해시태그를 여러번 사용했을 때 에러가 발생합니다

ex) #리액트 #리액트 #리액트

error -> SequelizeUniqueConstraintError: Validation error at Query.formatError

에러 로그를 보니 아래 부분이 오류라고 합니다.

await post.addHashtags(result.map((v) => v[0]));

코드에서 어떤 부분이 잘못된건가요?

그리고 추가적으로 map에서 동일한 해시태그를 입력하기 key값이 중복되어 오류가 납니다.

이러한 경우에는 key를 어떤 방식으로 넣어주는지도 궁금합니다.

아래는 routes/post.js 해시태그 부분 소스입니다.

const hashtags = req.body.content.match(/(#[^\s#]+)/g);
if (hashtags) {
const result = await Promise.all(hashtags.map((v) => Hashtag.findOrCreate({
where: { name: v.slice(1).toLowerCase() },
})));

await post.addHashtags(result.map((v) => v[0]));
}

답변 2

0

travelc2bd3님의 프로필 이미지
travelc2bd3
질문자

2021. 01. 23. 22:18

감사합니다.

위에 질문한 내용중에 같은 해시태그가 있을 때 map에서 key값이 중복되어 오류가 나서 key값을 어떤식으로 입력해주는지 궁금합니다.

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 01. 23. 21:22

해시태그 중복을 DB에 넣기 전에 제거하면 됩니다.

Array.from(new Set(hashtags))

하면 중복이 제거됩니다.