
-클라이언트에서 정보를 쳐서 보내주면은 서버(ex.index.js)에서 처리하는데
이때, body-parser dependency 꼭 필요! (npm install body-parser --save 입력)★

1)https://www.postman.com/downloads/
Download Postman | Get Started for Free
Try Postman for free! Join 35 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.
www.postman.com
2) register를 위한 route 코드 입력
// 회원 가입을 위한 route
app.post('/register', (req, res) => {
// 회원 가입 할 때 필요한 정보들을 client에서 가져오면
// 그것들을 데이터 베이스에 넣어준다
const user = new User(req.body); // 모델 이름 수정 및 대문자 사용
// MongoDB에서 오는 method .save
user.save((err, userInfo) => {
if (err) return res.json({ success: false, err });
// .status(200)은 올바른 값이 들어왔다는 뜻
return res.status(200).json({
success: true,
});
});
});
- post method 사용, 이 라우트의 endpoint는 /register, 콜백 function은 (req,res) - request, respond
-model 이름은 대문자!
-.save 메소드는 mongodb와 관련있음.
-.status(200)은 올바른 값이 들어왔다는 뜻임.
// 회원가입 위한 모델 만든거 소환
const { User } = require('./models/user'); // 모델 이름은 대문자로 시작하는 것이 관례
// bodyparser가 클라이언트에게서 오는 정보를 서버에서 분석해서 가져올 수 있게
// application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// application/json
app.use(bodyParser.json());
3) body-parser가 클라이언트에서 오는 정보를 분석해서 가져올 수 있도록 bodyparser.urlencoded/ bodyparser.json
4) 터미널에 npm run start 입력
5)post맨 켜서 new collection 만들기

5) post 메소드 써서 했으니까 post 누르고, port 넘버는 5000이었으므로 localhost:5000
chatgpt에게 물어본 내 문제점
주요 변경점:
- user 모델 import:
- const { user } = require('./models/user') → const { User } = require('./models/user')
- JavaScript에서는 관례적으로 모델 이름은 대문자로 시작합니다.
- 익명 함수 표현식 (=>) 오타 수정:
- app.post('/register',(req,res) ==> { → app.post('/register', (req, res) => {
- user.save((err,userinfo) ==> { → user.save((err, userInfo) => {
- 클래스 이름 및 변수 이름 충돌 방지:
- const user = new user(req.body); → const user = new User(req.body);
- 모델 이름과 변수 이름이 동일하면 혼란을 줄 수 있습니다비밀번호 암호화 필요!
//index.js 파일
const express = require('express');
const app = express();
const port = 5000;
const bodyParser = require('body-parser');
// 회원가입 위한 모델 만든거 소환
const { User } = require('./models/user'); // 모델 이름은 대문자로 시작하는 것이 관례
// bodyparser가 클라이언트에게서 오는 정보를 서버에서 분석해서 가져올 수 있게
// application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// application/json
app.use(bodyParser.json());
const mongoose = require('mongoose');
mongoose
.connect(
'mongodb+srv://newlifecode:1234@newlifecode.f0tau.mongodb.net/?retryWrites=true&w=majority&appName=newlifecode',
{
useNewUrlParser: true,
useUnifiedTopology: true,
}
)
.then(() => console.log('MongoDB Connected...'))
.catch((err) => console.error('MongoDB Connection Error:', err.message));
app.get('/', (req, res) => {
res.send('Hello World!');
});
// 회원 가입을 위한 route
app.post('/register', (req, res) => {
// 회원 가입 할 때 필요한 정보들을 client에서 가져오면
// 그것들을 데이터 베이스에 넣어준다
const user = new User(req.body); // 모델 이름 수정 및 대문자 사용
// MongoDB에서 오는 method .save
user.save((err, userInfo) => {
if (err) return res.json({ success: false, err });
// .status(200)은 올바른 값이 들어왔다는 뜻
return res.status(200).json({
success: true,
});
});
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
그 외 암기할 것!
비밀번호 암호화-> bcrypt
-
-
- 현재 비밀번호(password) 필드가 평문으로 저장됩니다. 보안 강화를 위해 암호화를 추가해야 합니다. 예를 들어, bcrypt 라이브러리를 사용.
-
const bcrypt = require('bcrypt');
const saltRounds = 10;
userSchema.pre('save', function (next) {
const user = this;
if (!user.isModified('password')) return next();
bcrypt.hash(user.password, saltRounds, (err, hash) => {
if (err) return next(err);
user.password = hash;
next();
});
});
unique 특징
데이터베이스에서 중복을 방지한다. 하지만, 인덱스 생성 오류가 발생할 수 있음.
'React' 카테고리의 다른 글
| [노드]SSH 이용해서 GITHUB 연결하기 (github 소스 배포 방법) (0) | 2024.11.24 |
|---|---|
| [노드] GIT 설치 ( git--version 오류 해결 방법 ) (0) | 2024.11.24 |
| [노드] mongo DB Model & Schema (user 모델 만들기) (0) | 2024.11.23 |
| [리액트]mongo DB 연결하기 (몽고 db 연결 에러 해결 tip) (1) | 2024.11.23 |
| [리액트] NODE JS와 EXPRESS JS 다운로드 하기 (0) | 2024.11.23 |