백엔드 회원가입 구현 중 에러
570
작성한 질문수 3
[제로초 강좌 질문 필독 사항입니다]
질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.
도움이 되는 질문을 하는 방법을 알려드립니다.
다음과 같이 db연결은 잘되어 있는데, ,회원가입을 누르면 이런 오류가 백에서 뜹니다.

그리고 브라우저 창 경고 메세지에서는 이러한 경고 메세지가 뜹니다.

개발자 도구 네트워크 창에는 이런 에러가 뜹니다.




type(pin):"SIGN_UP_FAILURE"
error(pin):"<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>Error: WHERE parameter "email" has invalid "undefined" value<br> at MySQLQueryGenerator.whereItemQuery (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1693:13)<br> at C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1684:25<br> at Array.forEach (<anonymous>)<br> at MySQLQueryGenerator.whereItemsQuery (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1682:35)<br> at MySQLQueryGenerator.getWhereConditions (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2025:19)<br> at MySQLQueryGenerator.selectQuery (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\dialects\abstract\query-generator.js:954:28)<br> at MySQLQueryInterface.select (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\dialects\abstract\query-interface.js:407:59)<br> at Function.findAll (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\model.js:1134:47)<br> at processTicksAndRejections (node:internal/process/task_queues:96:5)<br> at async Function.findOne (C:\Users\user\VscodeProjects\react-nodebird-master\prepare\back\node_modules\sequelize\lib\model.js:1228:12)</pre> </body> </html> "
코드는 어떤 부분에서 오류가 발생했는지 잘 모르겠어서 첨부하지 못했습니다. ㅠㅠ
어떤 부분에서 오류가 발생했는지 알려주시면 감사하겠습니다!!!
답변 1
0
서버로 email이 전달되지 않고 있는 겁니다. 네트워크탭에서 payload 탭에 email 있나 확인해보세요.
0
const express = require('express');
const bcrypt =require('bcrypt');
const passport = require('passport');
const { User, Post } = require('../models');
const { isLoggedIn, isNotLoggedIn } = require('./middlewares');
const router = express.Router();
router.post('/login',isNotLoggedIn, (req, res, next) => {
passport.authenticate('local', (err, user, info) => {
if (err) {
console.error(err); //에러 확인
return next(err);
}
if (info) {
return res.status(401).send(info.reason); //401은 허가되지 않음
}
return req.login(user, async (loginErr) => {
if (loginErr) {
console.error(loginErr);
return next(loginErr);
}
//res.setHeader('Cookie', 'cslhy')
const fullUserWithoutPassword = await User.findOne({ //fullUser는 모든정보들을 다 집어넣은 유저
where: {id:user.id},
attributes:{
exclude: ['password']
}, //비밀번호만 빼고 가져오겠다.
include: [{ //내가 쓴 게시글
model: Post,
}, { //팔로잉
model: User,
as: 'Followings',
},{ //팔로워
model: User,
as: 'Followers',
}]
})
return res.status(200).json(fullUserWithoutPassword); //사용자 정보를 프런트로 넘겨준다.
});
})(req, res, next);
}); //POST /user/login
router.post('/', isNotLoggedIn, async (req, res, next) => { // POST /user/
try{
const exUser = await User.findOne({
where: { //조건
email: req.body.eamil,
}
});
if (exUser) {
return res.status(403).send('이미 사용중인 아이디입니다.');
}
const hashedPassword = await bcrypt.hash(req.body.password, 12); //13은 보안 강도 -> 컴퓨터 성능에 따라
await User.create({
email: req.body.email,
nickname: req.body.nickname,
password: hashedPassword,
});
res.status(200).send('ok'); //200 생략가능 but 써라
} catch(error) {
console.error(error);
next(error); // status 500
}
});
//로그아웃 라우터 - 세션 지우기, 쿠키 지우기
router.post('/logout', isLoggedIn, (req, res) => {
req.logout();
req.session.destroy();
res.send('ok');
});
module.exports = router;
routes/user.js 파일입니다!
0
const express = require('express');
const cors = require('cors');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const passport = require('passport');
const dotenv = require('dotenv');
const postRouter = require('./routes/post');
const userRouter = require('./routes/user');
const db = require('./models');
const passportConfig = require('./passport');
dotenv.config();
const app = express();
db.sequelize.sync()
.then(() => {
console.log('db 연결 성공');
})
.catch(console.error);
passportConfig();
app.use(cors({
origin: '*',
credentials: false,
})); //cors에러를 해결하기 위해서
app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
}));
app.use(passport.initialize());
app.use(passport.session());
app.get('/', (req, res) => {
res.send('hello express');
});
app.get('/', (req, res) => {
res.send('hello api');
});
app.get('/posts', (req, res) => {
res.json([
{ id:1, content: 'hello'},
{ id:2, content: 'hello2'},
{ id:3, content: 'hello3'},
]);
});
app.use('/post', postRouter);
app.use('/user', userRouter);
app.listen(3065, () => {
console.log('서버 실행 중');
});아 네! app.js 파일입니다!
넥스트 버젼 질문
0
90
2
로그인시 401 Unauthorized 오류가 뜹니다
0
104
1
무한 스크롤 중 스크롤 튐 현상
0
198
1
특정 페이지 접근을 막고 싶을 때
0
117
2
createGlobalStyle의 위치와 영향범위
0
103
2
인라인 스타일 리렌더링 관련
0
98
2
vsc 에서 npm init 설치시 오류
0
159
2
nextjs 15버전 사용 가능할까요?
0
166
1
화면 새로고침 문의
0
129
1
RTK에서 draft, state 차이가 있나요?
0
164
2
Next 14 사용해도 될까요?
0
455
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
359
1
url 오류 질문있습니다
0
218
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
391
1
sudo certbot --nginx 에러
0
1295
2
Minified React error 콘솔에러 (hydrate)
0
481
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
257
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
341
1
npm run build 에러
0
526
1
front 서버 npm run build 중에 발생한 에러들
0
399
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
351
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
291
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
251
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
207
1






페이로드에 이메일이 있는거 같습니다!!