-
글쓴이글
-
2021년 8월 2일 15:29 #12525
김창규참가자안녕하세요 현제 몽구스를 이용하여 회원가입 기능을 구현해보고 있습니다. 그런데 몽구스 기능 중 사용자 정의 메소드라는 기능을 이용하여 좀더 깔끔하게 코드를 정리 해보고자 하는데 인터넷을 찾아서 따라 해봤는데 오류가 나버립니다. 코드는 아래에 남겨 두겠습니다.
서버코드
const router = require('express').Router();
const path = require('path');
const userSchema = require('../config/schema/sign_up');router.get('/',function(req,res){
res.render(path.join('../views/sign_up.ejs'));
userSchema.Sign_up()
});// router.post('/signUp_info',function(req,res){
// if( req.body ){
// }
// });module.exports = router;
스키마 코드
const mongoose = require('mongoose');
require('dotenv').config();mongoose.connect(process.env.MONGODB_URL,{
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true
})const user = new mongoose.Schema({
email:{
type: String,
require: true,
unique: true,
trim: true,
},
pw:{
type: String,
require: true,
trim: true
},
name:{
type: String,
require: true,
trim: true
}
});user.methods.Sign_up = function(pw ,cb) {
console.log('asdf');
};
module.exports = mongoose.model('UserInfo',user,'UserInfo');2021년 8월 2일 16:59 #12530
김창규참가자앗 제가 정신이 없어서 아무것도 적지 않았군요.. 원래는 회원가입 요청시
router.post('/signUp_info',function(req,res){
// if( req.body ){
// }
// });여기에서 userSchema.Sign_up()를 실행하여 스키마에 작성된 사용자 정의 함수를 실행하여 비밀번호를 암호화 하고 mongodb에 저장하는 함수를 실행하려 했습니다. 그런데 사용자 정의 함수가 잘 실행 되는지 보기 위해 get요청시 그냥 실행 하도록 만들었더니 아래와 같은 에러가 발생하면서 작동이 되지 않습니다. 이 문제가 post에서도 똑같아 질문 드렸습니다.
TypeError: userSchema.Sign_up is not a function
at C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\router\sign_up.js:7:14
at Layer.handle [as handle_request] (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:275:10)
at Function.handle (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:174:3)
at router (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:47:12)
at Layer.handle [as handle_request] (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:317:13)
at C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\express\lib\router\index.js:275:10)
at SendStream.error (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\trial\node_modules\serve-static\index.js:121:7)2021년 8월 2일 17:38 #12535
codingapple키 마스터module.exports = mongoose.model('UserInfo', user);
그르게요 마지막에 이것만 써보는게 어떨까요
2021년 8월 2일 19:36 #12540
김창규참가자스키마의 마지막 부분에 module.exports = mongoose.model('UserInfo',user,'UserInfo'); 대신
module.exports = mongoose.model('UserInfo', user);으로 변경하면 되는 건가요?
2021년 8월 2일 22:19 #12552
codingapple키 마스터서버측 js 파일들은 그럴 필요 없습니다
폴더랑 파일구조는 어떻게 되어있습니까 require하는 경로가 잘못된게 아닐까요
sign_up 파일을 가져올 때 './'부터 시작하는 경로로 바꿔보도록 합시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.