될때까지

((기업협업3)) node.js + mysql + CRUD 전체 유저 조회 본문

프로젝트/wecode : 기업협업

((기업협업3)) node.js + mysql + CRUD 전체 유저 조회

랖니 2022. 8. 18. 19:35
728x90

CRUD에서 C를 작성했던 코드는 아래와 같았다. (사수님이 작성해주셨음!!)

//router.userRouter.js

router.post("/", async(req, res, next) => {
    try {
        const sql =
        `
        insert into users (user_id, name, age) values (${req.body.user_id}, '${req.body.name}', ${req.body.age});
        `
        await db.query(sql)
        return res.status(200).json({message:"success"});
    } catch(e) {
        console.log(e.message);
    }
});

 

위의 코드를 참고해서 똑같이 R 전체목록 조회을 작성해봤다. 

router.get("/", async(req, res, next) => {
    try {
        const sql = 'select * from users'
        const result = await db.query(sql);
        return res.status(200).json({message:"success", 'result':result})
    } catch(e) {
        console.log(e.message);
    }
})

 

잘되나 포스트맨으로 테스트해봤는데 뒤에 따라온 이상한 데이터(???)

얘는 정체가 뭐지

너는 뭐니?

데이터가 2개가 오고있다. 하나는 내가 원하던 객체들이 오고, 두번째는 buf?? 첫번째 데이터를 buffter로 변경해서 2가지를 보내고 있다.  아직 buffter가 뭐고 왜 딸려오는지는 모르겠지만.. 저 불필요한 데이터를 잘라내기 위해선 두가지 방법을 알아냈다.

첫번째는 인덱스 사용

// 되는 코드 1 => 인덱스로 짤라내면 된다.
router.get("/", async(req, res, next) => {
    try {
        const sql = 'select * from users'
        const result = await db.query(sql);
        return res.status(200).json({message:"success", 'result':result[0]})
    } catch(e) {
        console.log(e.message);
    }
})

두번째는 []?를 사용해서 처리할 수 있다. []얘는 또 뭐야

이때 fields가 안쓰이길래 fields를 지우고 테스트해봤더니 그러면 아까처럼 또 뒤에 buff 데이터가 붙어서 따라온다. 그래서 fields에 담아두고 리턴하는 값은 rows 만 하는거군 하고 일단 이해했다. 

router.get("/", async (req, res, next) => {
  try {
    const [rows, fields] = await db.query("select * from users");
    return res.status(200).json({ message: "success", result: rows });
  } catch (e) {
    console.log(e.message);
  }
});

 

저 []가 무엇인고 하고 프론트분들께 여쭤보니까 구조분해할당이라고 한다. 구조분해할당????? 진심 첨들어보네

이해하기론 db.query의 결과가 2개가 반환되니까 배열에 분해해서 첫번째값은 rows에 두번째값은 fields에 담아주는가보다.

 

일단 얕게 이해하고 패스!!

 

쿼리의 결과로는 2가지 값을 반환한다. 아래 스택오버플로우 참고

https://stackoverflow.com/questions/69599546/why-do-mysql-query-show-columndefinition

728x90