2020년 2월 26일 복기(Database)

Ji Taek Lim·2021년 2월 26일

오늘한 데이터 베이스

const con = require('../db');
const db = require('../db');
module.exports = {
  orders: {
    get: (userId, callback) => {
      // TODO: 해당 유저가 작성한 모든 주문을 가져오는 함수를 작성하세요
      const query = `SELECT * FROM orders WHERE user_id = ?`;
      const parms = [userId]
      db.query(query, parms, (err, result) => {
        callback(err, result);
      })
    },
    post: (userId, orders, totalPrice, callback) => {
      // TODO: 해당 유저의 주문 요청을 데이터베이스에 생성하는 함수를 작성하세요
      // orders: [ { quantity: 1, itemId: 3 }, { quantity: 1, itemId: 6 } ]
      const query = `INSERT INTO orders (user_id, total_price) VALUES (?, ?)`;
      const parms = [userId, totalPrice];
      db.query(query, parms, (err, result) => {
        callback(err, result);
        if (result) {
          for (let obj of orders) {
            const query = `INSERT INTO order_items (order_id, item_id, order_quantity) VALUES (?, ?, ?)`;
            const parms = [null, obj.itemId, obj.quantity];
            db.query(query, parms, (err, result) => {
              callback(err, result);
            })
          }
        }
      })
    }
  },
  items: {
    get: (callback) => {
      // TODO: Cmarket의 모든 상품을 가져오는 함수를 작성하세요
      const query = `SELECT * FROM items`;
      db.query(query, (err, result) => {
        callback(err, result);
      })
    }
  }
};

SELECT orders.user_id, orders.total_price, orders.created_at, items.image FROM orders INNER JOIN items ON orders.id = items.id

SELECT orders.id, orders.user_id, orders.total_price, orders.created_at, items.image, items.price, items.name, order_items.order_quantity FROM orders INNER JOIN order_items ON orders.id = order_items.order_id INNER JOIN items ON order_items.item_id = items.id

한번 더 들었는데 아니다.

4/9일

const db = require("../db");

module.exports = {
  orders: {
    get: (userId, callback) => {
      // TODO: 해당 유저가 작성한 모든 주문을 가져오는 함수를 작성하세요

      const sql = `SELECT orders.id, orders.created_at, orders.total_price, order_items.order_quantity, items.image, items.name, items.price
      FROM orders 
      LEFT JOIN order_items ON (orders.id = order_items.order_id)
      LEFT JOIN items ON (order_items.item_id = items.id)
      LEFT JOIN users ON (orders.user_id = users.id)
      WHERE (users.id =${userId})`;

      db.query(sql, (error, result) => {
        console.log(result);
        callback(error, result);
      });
    },

    post: (userId, orders, totalPrice, callback) => {
      // TODO: 해당 유저의 주문 요청을 데이터베이스에 생성하는 함수를 작성하세요
      // orders: [{ quantity: 1, itemId: 2 },{ quantity: 1, itemId: 4 }]

      let sql1 = `INSERT INTO orders (user_id, total_price) VALUES (${userId}, ${totalPrice})`;
      db.query(sql1, (err, result) => {
        console.log(result);
        let sql2 = `INSERT INTO order_items (order_id, item_id, order_quantity) VALUES ?`;
        let params = orders.map((el) => [
          result.insertId,
          el.itemId,
          el.quantity,
        ]);
        console.log(params);

        db.query(sql2, [params]);
        callback(err, result);
      });
    },
  },
  items: {
    get: (callback) => {
      // TODO: Cmarket의 모든 상품을 가져오는 함수를 작성하세요
      const queryString = "SELECT * FROM items";

      db.query(queryString, (err, result) => {
        console.log(result);
        callback(err, result);
      });
    },
  },
};
profile
임지택입니다.

0개의 댓글