seed 데이터: 서버가 시작할 때 가지고 있어야 하는 데이터를 DB에 추가
가장 처음에 넣는 데이터
seed 파일 생성
- npx sequelize seed:generate --name initialMembers
initialMembers라는 seed파일을 생성한다
seeders 파일안에 js파일이 생성되는데
'use strict';
module.exports = {
async up (queryInterface, Sequelize) {
await queryInterface.bulkInsert('Members', [{
id: 1,
name: "Zake",
team: "Engineering",
position: "Android Developer",
emailAddress: "zake@google.com",
phoneNumber: "010-xxxx-xxxx",
admissionDate: "2021/11/14",
birthday: "1995/04/17",
profileImage: "profile11.png"
},
{
id: 2,
name: 'John Doe',
team: 'enginnering',
position:'server Developer',
emailAddress: 'john@enginnering.com',
phoneNumber: '010-1234-5678',
admissionDate:'2022/02/25',
birthday:'1990/01/01',
profileImage: 'profileImage.png'
}], {});
},
async down (queryInterface, Sequelize) {
await queryInterface.bulkDelete('Members', null, {});
}
};
테스트용으로 컬럼 두 개를 만든다
seed 데이터 삽입
- npx sequelize db:seed:all
모델과 데이터연동
models - member.js에서 id 항목 추가
안 쓰는 주석 정리
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Member extends Model {}
Member.init({
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
name: DataTypes.STRING,
team: DataTypes.STRING,
postion: DataTypes.STRING,
emailAddress: DataTypes.STRING,
phoneNumber: DataTypes.STRING,
addmissionDate: DataTypes.DATE,
birthday: DataTypes.DATE,
profileimage: DataTypes.STRING
}, {
sequelize,
modelName: 'Member',
});
return Member;
};
Member 클래스는 sequelize패키지의 Model을 상속받아 Member클래스는 모델이 된다
데이터베이스 있는 하나의 테이블에 대응하는 존재가 된다
Member.init({})은 모델과 테이블을 연동하는 코드
반응형
models - index.js 수정
const Sequelize = require('sequelize');
const config = require('../config/config.json');
const{
username,password,database,host,dialect,
} = config.development;
const sequelize = new Sequelize(database, username, password,{
host,
dialect,
});
const Member = require('./member')(sequelize,Sequelize.DataTypes);
const db = {};
db.Member = Member;
module.exports = db;
DB 데이터를 사용하는 js 파일에 아래 코드 추가
const db = require('./models');
const {Member} = db;
DB 객체 가져와서 멤버 모델을 꺼낸다
member의 DB에 team의 조건을 담은 query를 실행한다
app.get('/api/members', async (req, res) => {
const { team } = req.query;
if (team) {
const teamMembers = await Member.findAll({ where: { team } });
res.send(teamMembers);
} else {
const members = await Member.findAll();
res.send(members);
}
});
api.js 전체 코드
const express = require('express');
const app = express();
const db = require('./models');
const {Member} = db;
app.use(express.json());
app.get('/hello', (req, res) => {
res.send('<h1>Hello Express</h1>')
});
app.get('/api/members', async (req, res) => {
const { team } = req.query;
if (team) {
const teamMembers = await Member.findAll({ where: { team } });
res.send(teamMembers);
} else {
const members = await Member.findAll();
res.send(members);
}
});
app.listen(3000,() => {
console.log('listening ....'); //서버가 잘 동작하는지 확인
});
이제 extensions - REST Client로 응답이 잘 오는지 확인한다
test.http 파일을 현재 경로에 추가한다
GET http://localhost:3000/api/members
테이블에 담긴 정보가 전부 응답하는 걸 볼 수 있다
GET http://localhost:3000/api/members?team=enginnering
팀명이 enginnering인 쿼리를 넣어주면
id가 2번인 테이블이 출력된다
하나의 row만 조회할 때(findOne)
app.get('/api/members/:id', async (req, res) => {
const { id } = req.params;
const member = await Member.findOne({where: {id}})
if (member) {
res.send(member);
} else {
res.status(404).send({message: 'There is no member with the id'});
}
});
GET http://localhost:3000/api/members/1
id가 1번인 row 조회
반응형
'기타 프로그램' 카테고리의 다른 글
npm yarn 명령어 차이 (0) | 2022.03.03 |
---|---|
Node.js DB 데이터 추가, 수정, 삭제 (0) | 2022.02.28 |
Node.js 모델과 테이블 생성하기 (0) | 2022.02.25 |
Node.js 웹 서버 라우팅 하기(2) (0) | 2022.02.24 |
Node.js로 웹서버 만들기(1) (0) | 2022.02.24 |
댓글