-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
back에서 자꾸 userId를 읽을 수 없다고 뜨는데 왜 그런가요?
20.03.30 19:43 작성 조회수 157
0
프론트에서 로그인하면 SUCCESS까지 뜨는데 back에서는 DB에 사용자가 추가되지 않았어요 이렇게 에러가 떠서 뭐가 잘못된 걸까요?
ragas/userex.js
function* signUpAPI(signUpData) {
//서버에 요청을 보내는 부분
return axios.post('http://localhost:3065/api/user/', signUpData);
// return axios.post('/login');
}
function* signUp(action) {
try {
//call은 동기 호출 응답받을 때까지 기다림
// yield delay(2000);
yield call(signUpAPI, action.data);
// throw new Error('에러에러에러');
yield put({
//put은 dispatch랑 동일
type: SIGN_UP_SUCCESS
});
} catch (e) {
//loginAPI 실패
console.error(e);
yield put({
type: SIGN_UP_FAILURE,
error: e,
})
}
}
function* watchSignUp() {
yield takeEvery(SIGN_UP_REQUEST, signUp);
// yield delay(2000);
//리스너 역할
// 비동기 요청, 타이머 넣어도 되고
}
pages/signup.js에 있는 onSubmit 함수
const onSubmit = useCallback((e) => {
e.preventDefault();
if (password !== passwordCheck) {
return setPasswordError(true);
}
if (!term) {
return setTermError(true);
}
if (!agree) {
return setAgreeError(true);
}
// dispatch(signUpAction({
// userId: id,
// userPassword: password,
// userName: name,
// // major,
// }));
return dispatch({
type: SIGN_UP_REQUEST,
data: {
userId: id,
userPassword: password,
userName: name,
},
});
// console.log({
// id, name, birth, entergrade, major, nowstate, password, passwordCheck, term, agree
// });
}, [id, name, password, passwordCheck, term, agree]);
reducers/userex.js에서 SIGNUP 부분
case SIGN_UP_REQUEST: {
return {
...state,
isSigningUp: true,
isSignedUp: false,
signUpErrorReason: '',
}
}
case SIGN_UP_SUCCESS: {
return {
...state,
isSigningUp: false,
isSignedUp: true,
}
}
case SIGN_UP_FAILURE: {
return {
...state,
isSigningUp: false,
signUpErrorReason: action.error,
}
}
답변을 작성해보세요.
0
0
learn
질문자2020.03.30
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
const db = require('./models');
const userAPIRouter = require('./routes/user');
const plannerAPIRouter = require('./routes/planner');
const app = express();
db.sequelize.sync(); //알아서 테이블 생성
app.use(morgan('dev')); //미들웨어
app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(cors());
//API는 다른 서비스가 내 서비스의 기능을 실행할 수 있게 열어둔 창구
app.use('/api/user', userAPIRouter);
app.use('/api/planner', plannerAPIRouter);
app.get('/', (req, res) => {
res.send('Hello, server');
});
app.get('/about', (req, res) => {
res.send('Hello, about');
});
app.listen(3065, () => {
console.log(`server is running on localhost:3065`);
});
이렇게 되어 있는데 router는 빼먹은 건가요?
0
조현영
지식공유자2020.03.30
혹시 router(app.use(주소, router))가 app.use보다 더 위에 연결되어 있나요? express.json과 urlencoded가 더 위에 있어야 합니다.
0
learn
질문자2020.03.30
back/index.js에
app.use(express.json());
app.use(express.urlencoded({extended: true}));
이부분은 넣어져있는데 다른 부분도 살펴봐야되나요?
0
0
learn
질문자2020.03.30
const express = require('express');
const bcrypt = require('bcrypt');
const passport = require('passport');
const db = require('../models'); //db안에 User를 연결해놨기 때문에 쓸 수 있음
const router = express.Router();
router.get('/', (req, res) => { //사용자 정보를 가져옴
});
router.post('/', async (res, req, next) => { //POST/api/user 회원가입 사용자 등록
//요청에 헤더, 본문을 같이 보낼 수 있음
//본문에 데이터를 넣어서 보냄
try {
const exUser = await db.User.findOne({
where: {
userId: req.body.userId,
},
});
if (exUser) {
//400~599
return res.status(403).send('이미 사용중인 아이디입니다.');
//send는 문자열을 보냄
}
const hashedPassword = await bcrypt.hash(req.body.userPassword, 12);
const newUser = await db.User.create({
userName: req.body.userName,
userId: req.body.userId,
userPassword: hashedPassword,
});
console.log(newUser);
return res.status(200).json(newUser);
} catch (e) {
console.error(e);
// return res.status(403).send(e);
//에러처리 후
return next(e);
}
});
router.get('/:id', (req, res) => { //남의 정보 가져오는 것 ex) /3
})
router.post('/logout', (res, req) => {
});
router.post('/login', (res, req) => {
});
router.get('/:id/follow', (req, res) => {
});
router.post('/:id/follow', (req, res) => {
});
router.delete('/:id/follow', (req, res) => {
});
router.post('/:id/follower', (req, res) => {
});
module.exports = router;
routes/user.js는 이렇게 적었습니다!
0
답변 7