강의

멘토링

커뮤니티

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

d\/b님의 프로필 이미지
d\/b

작성한 질문수

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

db 데이터 불러오기

작성

·

220

0

안녕하세요.

로그인을 하고 나면 me 객체를 다음과 같이 설정해서 프론트로 보냈습니다. (커스텀이 조금 된 상태입니다.)

const fullUserWithoutPassword = await User.findOne({
where: { id: user.id },
attributes: {
exclude: ["password"],
},
include: [
{
model: Profile,
attributes: ['id','UserId','name','intro'],
},
],
});

res.status(200).json(fullUserWithoutPassword)


프론트에서 me 객체를 불렀을 때 다음과 같이 불러와지는 것을 확인할 수 있습니다.

me 객체를 통해 me.id me.nick 등등은 다 접근이 되는데

Profiles 라는 것에 접근하려할 때 me?.Profiles 라고 접근하니 계속 undefined 오류가 납니다. (항상 없진 않고 값이 존재할때도 있고 새로고침하거나 제가 잘 모르겠는 이유로 갑자기 undefined가 뜹니다.) 

optional chaining 을 사용해서 값이 없기 때문에  undefined 이 뜨는 것은 이해를 했는데요. 제가 모르는 어떤 이유로 값이 있었다 없어지는 문제를 해결 못하겠습니다 ㅠㅠ

User model 에 직접적으로 들어가 있는 속성(ex.email, id ...)과 associate 된 Profile model 에 있는 속성을 불러오는 방식이 다른 것일까요?

어떻게 하면 me 객체에서 Profiles 객체의 값에 undefined 되지 않고 접근할 수 있나요?

아래 예시와 같이 데이터를 이용하고 싶습니다.

//example
const
{ me } = useSelector((state) => state.user);
const profiles = me?.Profiles
...jsx...
{profiles.name}
{profiles.intro}

답변 1

0

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

Profiles가 배열이니 me?.Profiles[0].name 이겠죠. 근데 Profiles 배열로 나올 이유가 없는데 관계 설정 hasOne 대신 hasMany로 잘못하신 것 같습니다.

d\/b님의 프로필 이미지
d\/b
질문자

아 hasMany 랑 배열로 커스텀했습니다. 배열 인덱스에 문제가 있어서 undefined가 떴네요.

감사합니다!

d\/b님의 프로필 이미지
d\/b

작성한 질문수

질문하기