사용자가 입력한 값에 대한 유효성을 검사해보자
외부 모듈 express-validator 를 사용해보자

req 값에 대한 유효성 검사를 편하게 해준다.
유효성 검사를 할 곳에다가 해당 코드를 적어주자
const { body, validationResult } = require('express-validator')
.post(
body('userId').notEmpty().isInt().withMessage('userId는 숫자여야 합니다.')
, (req, res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
console.log(err.array());
}
const { name, userId } = req.body;
if (name) {
let sql = `INSERT INTO channels (name, user_id) VALUES (?, ?)`;
let values = [name, userId];
conn.query(sql, values,
function (err, results) {
res.status(201).json(results);
}
)
} else {
res.status(400).json({
message : '요청값을 제대로 보내주세요'
})
}
}) //채널 개별 생성
body('userId').notEmpty().isInt().withMessage('userId는 숫자여야 합니다.')
, (req, res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
console.log(err.array());
}
name 에 대해서도 유효성을 체크하고 코드를 개선해보자.post(
[body('userId').notEmpty().isInt().withMessage('userId는 숫자여야 합니다.'),
body('name').notEmpty().isString().withMessage('name은 문자여야 합니다')]
, (req, res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
const { name, userId } = req.body;
let sql = `INSERT INTO channels (name, user_id) VALUES (?, ?)`;
let values = [name, userId];
conn.query(sql, values,
function (err, results) {
res.status(201).json(results);
}
)
}) //채널 개별 생성
conn.query(sql, values,
function (err, results) {
if (err) {
console.log(err);
return res.status(400).end();
}
res.status(201).json(results);
}
)
.get(
body('userId').notEmpty().isInt().withMessage('userId는 숫자여야 합니다.')
, (req, res) => {//채널 전체 조회
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
const { userId } = req.body;
let sql = `SELECT * FROM channels WHERE user_id = ?`
conn.query(sql, userId,
function (err, results) {
if (results.length)
res.status(200).json(results)
else
notFoundChannel(res);
}
)
})
.get(
param('id').notEmpty().withMessage('채널 id 필요')
, (req, res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
let { id } = req.params;
id = parseInt(id);
let sql = `SELECT * FROM channels WHERE id = ?`
conn.query(sql, id,
function (err, results) {
if (err) {
console.log(err);
return res.status(400).end();
}
if (results.length)
res.status(200).json(results)
else
notFoundChannel(res);
}
)
}) //채널 개별 조회
.put(
[param('id').notEmpty().withMessage('채널 id 필요'),
body('name').notEmpty().isString().withMessage('채널명 오류')]
, (req, res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
let { id } = req.params;
id = parseInt(id);
let { name } = req.body;
let sql = `UPDATE channels SET name = ?
WHERE id = ?`
let values = [name, id];
conn.query(sql, values,
function (err, results) {
if (err) {
console.log(err);
return res.status(400).end();
}
if (results.affectedRows === 0) {
return res.status(400).end();
} else {
res.status(200).json(results)
}
}
)
}) //채널 개별 수정
.delete(
param('id').notEmpty().withMessage('채널 id 필요')
, (req, res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
let { id } = req.params;
id = parseInt(id);
let sql = `DELETE FROM channels WHERE id = ?`
conn.query(sql, id,
function (err, results) {
if (err) {
console.log(err);
return res.status(400).end();
}
if (results.affectedRows === 0) {
return res.status(400).end();
} else {
res.status(200).json(results)
}
}
)
}) //채널 개별 삭제
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
const validate = (req,res) => {
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array())
}
}