inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

이전 질문에 이어서 새로운 문제가 생겼습니다.

해결된 질문

188

이승훈

작성한 질문수 49

0

이전에 제가 아래 코드를 사용해서 변경점을 나타내려 하였습니다.

const modified = await User.update(
            {
                name,
                age,
                married,
                comment,
            },
            {
                where: { name: params },
            }
        );

이 코드를 사용한다 한들 변경만 해줄 뿐, 변경점을 나타낼수는 없었습니다. 그래서 저는 코드를 아래 처럼 수정했습니다.

const { name, age, married, comment } = req.body;
    try {
        const params = decodeURIComponent(req.params.who);

        const getOld = async () => {
            const usersBefore = await User.findAll({
                where: { name: params },
            });
            return JSON.stringify(usersBefore[0].dataValues);
        };

        await User.update(
            {
                name,
                age,
                married,
                comment,
            },
            {
                where: { name: params },
            }
        );

        const getNew = async () => {
            const usersAfter = await User.findAll({
                where: { name: params },
            });
            return JSON.stringify(usersAfter[0].dataValues);
        };

        const result1 = await getOld();
        const result2 = await getNew();
        const message = "유저가 변경되었습니다!";

        res.render("show", { result1, result2, message });
    } catch (err) {
        console.error(err);
        next(err);
    }

 간략하게 제 기준에서 설명드리자면 update()함수를 쓰기 전, 즉 변경전에 데이터를 getOld 함수안에 User.findAll()안에 where옵션으로 라우트 매개변수를 가져옵니다. 저는 여기서 데이터를 바꾸기 전에 데이터가 getOld함수안에 저장되어 있을 거라고 생각했습니다.  그 다음에 User.update() 함수로 데이터를 변경합니다. 그리고 데이터가 변경 되어 있을테니 데이터베이스에서 다시한번 getNew() 함수를 통해서 User.findAll()함수로 바꿔져 있을(제 기준입니다.) 데이터를  getNew함수안에 저장되었을 거라 생각했습니다.

 즉 'User.update()를 기준으로 getOld와 getNew에는 각각 변경전과 변경후 데이터가 담겨져 있을거다' 라고 생각했습니다. 하지만 저의 예상은 보기좋게 빗나갔네요 ㅋㅋ getOld와 getNew에는 둘다 똑같이 변경후의 데이터가 저장되어있었습니다. 나름 괜찮은 발상이었는데 변경전 데이터와 변경후 데이터를 어찌 나누면 좋을지 궁금합니다.

Sequelize mongodb mysql nodejs

답변 1

0

제로초(조현영)

await getOld를 await User.update 전에 하셔야죠. 업데이트 후에 하시면 당연히 업데이트된 데이터를 가져오죠.

0

제로초(조현영)

getOld랑 getNew랑 잘 보시면 똑같은 함수입니다.

0

이승훈

await getOld() 배치 순서를 변경했더니 해결되었습니다. 감사합니다!

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

926

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1137

1

node.js 교과서 3판 질문드립니다

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

427

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

488

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

518

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3543

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

244

1

multer 사용시 file 외 name값은 못받나용?

0

429

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

292

1

Strategy의 done에 대해 질문드립니다.

0

373

1

안녕하세요 fs 권한 관련 질문드립니다

0

455

1

시퀄라이즈 연결질문...

0

510

2

res.setHeader vs res.cookie

0

1797

3