강의

멘토링

커뮤니티

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

바스니카님의 프로필 이미지
바스니카

작성한 질문수

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

데이터 수정에 대해 질문드립니다.

작성

·

255

0

User 테이블이 아래와 같고,

Post 테이블이 아래와 같을 때,

DB의 내용은 바꾸지 않고, 제가 사용할 코드 상에서만 홍길동을 김민수로 바꾸고 싶습니다.

이 때, 복사를 사용해야 할 지가 고민입니다.

1.

const post = await Post.findOne({
 where: {id: 1},
 include: [{ model:User }]
});

const copyPost = {...post};
copyPost.name = "김민수";

 

2.

const post = await Post.findOne({
 where: {id: 1},
 include: [{ model:User }]
});

post.name = "김민수";

 

1번처럼 복사를 사용할까요 아니면

2번처럼 post 식별자를 그냥 쓰되 post.save를 안하는 걸로 사용할까요?

 

만약 1번이 더 나은 해결책이라면

1번처럼 얕은 복사를 해야 하나요 아니면 깊은 복사를 해야 하나요? 조언 부탁드립니다.

 

답변 1

1

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

toJSON()을 붙여서 json객체로 바꾼 뒤 이름을 바꿔줘야 나중에 실수로 save를 하거나 하는 걸 막을 수 있을 것 같습니다

바스니카님의 프로필 이미지
바스니카
질문자

새로운 json 객체를 하나 만들어서 요소들을 넣으라는 말씀이신가요?

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

아뇨 toJSON()을 붙여보세요

바스니카님의 프로필 이미지
바스니카
질문자

감사합니다. toJSON 붙이니까 save를 막아주네요. 혹시 sequelize가 반환하는 object는 타입이 뭔지 알 수 있을까요? toJSON을 안 붙이면 보기 힘들게 나오더라고요.

바스니카님의 프로필 이미지
바스니카

작성한 질문수

질문하기