MysqlDB - 네번째 이야기

전진영·2022년 3월 13일
0

mysql

목록 보기
5/8

우리는 이전에 CRUD의
create를 seeder를통해서 안에 내용을 강제로 넣어주어보았다.

bulkInsert 정리는 추후에 다시하고

이렇게 추가되어있는내용을 나는 포스트맨을 통해 api를 실행해보려한다.
제일어려웠던 부분은 우리가 const 해서 모듈이라 함수를 불러올때 대체적으로 그냥 변수명을 불러오는데
db안에 모델로 선정한후 그안에 값을 불러오기때문에 매개변수?로 불러와야되는거같다 그내용은 지금 정리해가며 다시 확인해보자

router/user.js

const express = require("express");
const router = express.Router();
const { Users } = require("../models/index");

/* GET Users listing. */
router.get("/", function (req, res, next) {
  res.send("respond with a resource");
});
/* POST sign-in, check DB. */
console.log(11111111111111111111);
console.log(Users);
console.log(222222222222222222222);
router.post("/signin", async (req, res, next) => {
  console.log(33333333333333);
  try {
    console.log(444444444444444);
    console.log(Users);
    const user = await Users.findAll({
      where: {
        myfavorite: "가수:이루, 제목: 흰눈",
        nation: "대한민국",
      },
    });
    res.send(user);
    console.log(user);
  } catch (err) {
    console.error(err);
  }
});

module.exports = router;

우리는 Users를 모델에서 선언해주었다. 그리고 그값을 db에 넣었지 그코드는

const { Users } = require("../models/index");

models/user.js

"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
  class Users extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
    }
  }
  Users.init(
    {
      address: DataTypes.STRING,
      nation: DataTypes.STRING,
      myfavorite: DataTypes.STRING,
      action_right: DataTypes.TINYINT,
      play_time: DataTypes.TIME,
      play_count: DataTypes.INTEGER,
      play_redo: DataTypes.STRING,
      play_music: DataTypes.STRING,
    },
    {
      sequelize,
      modelName: "Users",
    }
  );
  return Users;
};

여기에 있다 그리고 우리는 index js에서 model로 선언한값을 db에 넣기로 했고 그값을 가져오기위해선 model의 해당 js를 다이렉트로 연결하는것이아니라 index로 통해서 가져오늘것을 알 수있다.

models/index.js

"use strict";

const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || "development";
const config = require(__dirname + "/../config/config.js")[env];
const db = {};

let sequelize;
if (config.use_env_variable) {
  sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  sequelize = new Sequelize(
    config.database,
    config.username,
    config.password,
    config
  );
}

fs.readdirSync(__dirname)
  .filter((file) => {
    return (
      file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
    );
  })
  .forEach((file) => {
    const model = require(path.join(__dirname, file))(
      sequelize,
      Sequelize.DataTypes
    );
    db[model.name] = model;
  });

Object.keys(db).forEach((modelName) => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

그리하여 우리는 post맨을 통해 불러온값을 콘솔을 찍어 확인해 보았다.



이렇게 우리는
CRUD에서 Read findAll을통하여 db안의 테이블에 어떤값이 있는지 불러오는것을 성공하였다.

profile
코딩어린이

0개의 댓글