• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 몽구스 사용자 정의 메소드 사용법 질문입니다.

몽구스 사용자 정의 메소드 사용법 질문입니다.

10 글 보임 - 1 에서 10 까지 (총 16 중에서)
  • 글쓴이
  • #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');

    #12529

    codingapple
    키 마스터

    무엇을 할 때 무슨 에러가 나는 것인가요 

    #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)

    #12535

    codingapple
    키 마스터

    module.exports =  mongoose.model('UserInfo', user);

    그르게요 마지막에 이것만 써보는게 어떨까요 

    #12540

    김창규
    참가자

    스키마의 마지막 부분에 module.exports = mongoose.model('UserInfo',user,'UserInfo'); 대신 

    module.exports =  mongoose.model('UserInfo', user);으로 변경하면 되는 건가요?

    #12545

    codingapple
    키 마스터

    넴 아마도요? 

    #12547

    김창규
    참가자

    오류가 안 고쳐 지네요 ㅠㅠ

    #12548

    김창규
    참가자

    혹시 schema를 작성한 js파일도 static에 옮겨서 기본파일을 설정 해주어야 하나요?

    #12552

    codingapple
    키 마스터

    서버측 js 파일들은 그럴 필요 없습니다

    폴더랑 파일구조는 어떻게 되어있습니까 require하는 경로가 잘못된게 아닐까요

    sign_up 파일을 가져올 때 './'부터 시작하는 경로로 바꿔보도록 합시다

     

    #12554

    김창규
    참가자

    아래와 같이 세팅 되어있습니다.

    폴더구조

10 글 보임 - 1 에서 10 까지 (총 16 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠