직접 mysql workbench 들어가서 db를 만들지 않고, 터미널에 ' npx sequelize db:create ' 로 db를 만들 수도 있다.
router.route('/')
.get(async (req, res, next) => {
try {
const users = await User.findAll();
res.json(users);
} catch (err) {
console.error(err);
next(err);
}
})
.post(async (req, res, next) => {
try {
const user = await User.create({
name: req.body.name,
age: req.body.age,
married: req.body.married,
});
console.log(user);
res.status(201).json(user);
} catch (err) {
console.error(err);
next(err);
}
});
위처럼 routes로 따로 분리를 해준 후 해당 주소로 get, post 등을 요청할 시 작동할 로직을 만들어 준다.
res로 응답 데이터를 보내줄 때, 문자만 보내줄 때는 res.send(), 파일을 보내줄 때 res.file(), 템플릿 엔진 렌더링 할 때는 res.render(), api 요청 시는 거의 res.json() 써 줌
api 요청은 거의 res.json()이라고 생각하면 됨
또한 get 요청시 User테이블의 정보를 users에 담아서 render시에 두 번째 인자로 전달된 데이터는, 프론트 서버에서 해당 템플릿 파일을 렌더링할 때 사용할 수 있는 변수로 사용됨
router.get('/', async (req, res, next) => {
try {
const users = await User.findAll();
res.render('sequelize', { users }); //
} catch (err) {
console.error(err);
next(err);
}
{% for user in users %}
<tr>
<td>{{user.id}}</td>
<td>{{user.name}}</td>
<td>{{user.age}}</td>
<td>{{ '기혼' if user.married else '미혼'}}</td>
</tr>
{% endfor %}
위 처럼 front에서 render시에 넘겨준 user데이터 객체가 호출이 가능하다-
put과 patch는 데이터를 업데이트한다는 점에서 일맥상통하다.
하지만 차이점은
PUT은 말 그대로 해당 데이터의 document를 새로 입력해준 document로 통으로 바꿔버리는 요청이고
PATCH는 filter로 찾은 데이터의 해당 부분만 수정해주는 요청이다.
예를 들면 휴대폰이 고장났을 때, 통으로 바꾸는 것이 PUT이고, 고장 난 부품만 바꾸는 것이 PATCH이다.
.patch(async (req, res, next) => {
try {
const result = await Comment.update({
comment: req.body.comment,
}, {
where: { id: req.params.id },
});
res.json(result);
} catch (err) {
console.error(err);
next(err);
}
위와 같은 patch 요청이 있을 때, comment만 바꾸게 적어놓았다. 하지만 이를 patch로 바꿀 시 comment 컬럼 뿐만이 아닌 모든 컬럼을 다 적어주어야 한다.

api를 작성하고, 요청을 보낼시 터미널에 해당 요청에 대한 로그가 출력된다.

이 로그는 JS로 작성된 시퀄라이즈 코드를 SQL로 문법으로 이렇게 작성된다는 뜻인데, ?가 있는 칸은 보안 상 안보이게 함