Node.js

node.js와 mongoDB로 웹 만들기 (5) 아이디 중복체크(ajax)

gamzaggang7 2023. 1. 17. 23:37
728x90

* 개발환경 - 윈도우, VS Code 

 

1. register.ejs 에 아래 코드 추가

        <script>
            $('#register').click(()=>{
                const id = $("#id").val();
                const pw = $("#pw").val();

                $.ajax({
                    url: '/member/register',
                    method: 'POST'
                    data: {id: id, pw: pw}
                }).done((result)=>{
                    console.log(result);
                    console.log(result.message);
                })
            })
        </script>

회원가입 버튼 누르면 ajax 통신을 하는 코드

jquery 불러오는 코드 밑에 작성해야함

ajax 이용해서 데이터 내보내면서 아이디 중복체크해서 결과를 받을 거임

728x90

 

2. member.js 에 아래 코드 추가

router.post('/register', (req, res)=>{
    console.log('in register post');

    let id = req.body.id;
    let pw = req.body.pw;

    res.status(200).send({message: 'ajax 통신 성공 - id: ' + id + ', pw: ' + pw});
})

ajax로 보낸 값은 req.body 안에 들어있음

 

 

3. server.js 에 아래 코드 추가

app.use(express.urlencoded({extended: true}));

그래야 body-parser 기능을 사용해서 body로 데이터 값을 받을 수 있음

 

 

응 안됨 며칠째 안됨 그래서 다른 방법찾음

4. mongoose 설치

 

5. 루트 디렉토리에 models 폴더 만들고 그 안에 User.js 파일 생성

user 정보 저장하는 곳임

 

 

6. User.js에 아래 코드 추가

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    ID: {
        type: String,
        required: true,
    },
    PW: {
        type: String,
        required: true,
    },
});

module.exports = User = mongoose.model("user", UserSchema);

 

7. member.js에 아래 코드 추가

const User = require("../models/User");   // User model 불러오기
const bcrypt = require("bcrypt");       // 암호화 모듈

router.post(
    "/",
    async (req, res) => {
        const { ID, PW } = req.body;

        try {
            // user에 ID, PW 값 할당
            let user = new User({
                ID,
                PW,
            });

            // PW 암호화하기
            const salt = await bcrypt.genSalt(10);
            user.PW = await bcrypt.hash(PW, salt);

            await user.save();  // db에 user 저장

            res.send("Success");
        }   catch (error) {
            console.error(error.message);
            res.status(500).send("Server Error");
        }
    }
);

bcrypt는 쓰기전에 설치해야됨

 

 

728x90