Sequelize & DB 오류 - 회원가입부분

Jamkris (승현)·2023년 7월 22일
0

Error

목록 보기
1/3
post-thumbnail

오류

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해준다.

profile
Nothing Change If You Don't Try

1개의 댓글

comment-user-thumbnail
2023년 7월 22일

글을 통해 Sequelize와 Postman을 이용한 DB 연결과 데이터 송수신에 대한 방법을 배울 수 있어서 좋았습니다. 특히 오류 해결에 대한 과정 설명이 인상깊었어요!

답글 달기