Sqlite와 Sequelize 사용하기 (4) - 상세조건

sunny·2022년 12월 5일
0

react

목록 보기
9/11
post-custom-banner

findAll, findOne

findAll : 모든 데이터를 전부 가져온다 (예 : 상품리스트)

app.get("/products", (req, res) => {
  models.Product.findAll({})
    .then((result) => {})
    .catch((error) => {});
});

findOne : 한개의 데이터만 가져온다 (예 : 상품 상세페이지)
where 조건으로 어떤 한개를 가져올지 결정한다.
id가 일치하는 조건을 넣으면 아래 코드와 같다.

app.get("/products/:id", (req, res) => {
  const params = req.params;
  const { id } = params;
  models.Product.findOne({
    where: {
      id: id,
    },
  })

데이터 가져올때 추가 설정 가능한 조건들

가져올 레코드 수 limit
상품 전체 리스트를 가져올때 1만건, 10만건 전부 불러오면 문제가 생긴다. 적절한 limit 값을 넣어준다.

정렬 Order
디폴트 id로 오름차순 정렬되어 있다. 최신 등록순으로 정렬하고자 할때, createdAt, desc 조건을 줄 수 있다.

가져올 컬럼 attributes
attributes를 추가하지 않으면 모든 컬럼값을 가져오게 되며, 혹시 보안에 필요한 데이터가 노출되거나, 트레픽이 낭비될 수도 있다. 필요한 컬럼만 가져오도록 하자.
예로, 상품리스트에는 상품상세디스크립션은 필요 없으니 넣지 않는다.

  models.Product.findAll({
    limit: 10,
    order: [["createdAt", "DESC"]],
    attributes: ["id", "name", "price", "createdAt", "seller"],
  })
profile
Believe in yourself :)
post-custom-banner

0개의 댓글