Sequelize로 DB를 연결하고 데이터를 Postman으로 보내는 데 오류가 생겼다.
파일구조
// index.js
const express = require('express');
const app = express();
const cors = require('cors');
//Port Setting
const PORT = process.env.PORT || 3001;
app.get('/', (req, res) => {
res.send('API Running');
});
//DataBase
const db = require('./models');
app.use(
cors({
origin: 'https://localhost:3001',
credentials: true,
optionsSuccessStatus: 200
})
);
//DataBase Router Call
const usersRouter = require('./routes/Users');
app.use('/auth', usersRouter);
//Port
db.sequelize.sync().then(() => {
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
});
// models/Users.js
module.exports = (sequelize, DataTypes) => {
const Users = sequelize.define('Users', {
userid: {
type: DataTypes.STRING,
allowNull: false
},
password: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
allowNull: false
},
nickname: {
type: DataTypes.STRING,
allowNull: false
}
});
return Users;
};
// routes/User.js
const express = require('express');
const router = express.Router();
const { Users } = require('../models');
const bcrypt = require('bcrypt');
router.post('/', async (req, res) => {
const { userid, password, email, nickname } = req.body;
bcrypt.hash(password, 10).then((hash) => {
Users.create({
userid: userid,
password: hash,
email: email,
nickname: nickname
});
res.json('SUCCESS');
});
});
module.exports = router;
요따구로 Models에서 DB를 생성하고 index.js에서 라우터(/auth)를 열어주고
Users.js에 /로 Post했는 데
TypeError: Cannot destructure property 'userid' of 'req.body' as it is undefined.
이런오류가 떴다.
이유는 간단했다. index.js에서 use.json을 안써서 그랬던 것이다. 생각보다 이러한 오류에 대한 답을 찾기가 힘들어서 글을 쓰게 되었다.
// index.js
const express = require('express');
const app = express();
const cors = require('cors');
app.use(express.json());
//Port Setting
const PORT = process.env.PORT || 3001;
app.get('/', (req, res) => {
res.send('API Running');
});
//DataBase
const db = require('./models');
app.use(
cors({
origin: 'https://localhost:3001',
credentials: true,
optionsSuccessStatus: 200
})
);
//DataBase Router Call
const usersRouter = require('./routes/Users');
app.use('/auth', usersRouter);
//Port
db.sequelize.sync().then(() => {
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
});
app.use(express.json()); 이 구문을 추가 해주면 json으로 Postman이 Response해준다.
글을 통해 Sequelize와 Postman을 이용한 DB 연결과 데이터 송수신에 대한 방법을 배울 수 있어서 좋았습니다. 특히 오류 해결에 대한 과정 설명이 인상깊었어요!