인프런 커뮤니티 질문&답변
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로 잘못하신 것 같습니다.





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