🔓데이터베이스/몽고db

module을 exports하여 postman에서 send 해보기(회원가입 기능)

하얀성 2022. 12. 19. 14:18
<User.js>
const User = mongoose.model('User',userSchema); //model(이름부여, 대상)
//model은 스키마를 감싸줌

module.exports = { User }; // 다른 곳에서도 사용가능
 
=============> 자꾸 모듈 오류가 나는 이유가 있었다...ㅎㅎ;

(exports에 s도 빼먹고... module이라 안쓰고 mongoose라 써둠.


<index.js>

const { user } = require("./models/User");  /
 
models 디렉터리 안의 User.js을 가져와서 사용.(디렉터리명도 오타내서 자꾸 에러남)
(user 네임도 오류다)

 


module 사용하기

module은 하나의 자바스크립트 파일과 같다.
하나의 module을 파일에 작성하고 외부 파일에서 사용해보자.

  1. moudule 안에 함수를 작성해주고
// 함수 정의
function 함수명() {
  return 결과
}

// 함수 내보내기
module.exports = 함수명

module.exports = 함수명을 작성해주면 해당 함수를 외부(다른 파일)로 내보낼(export) 준비가 끝난 것이다.

 

 

postman에서 자꾸 오류가 뜬다.

 

ReferenceError: User is not defined

 

ReferenceError: User is not defined

노드 개발을 하다보면, 참 많이 나는 에러다. 쉽게 말하면, 모듈화를 해놓고 해당 모듈을 불러오지 않아서(import // require) 발생하는 문제이다. 따라서, const User = require('./User); 이런식으로 해당 모

codingmania.tistory.com

위의 오류가 postmain에서 send하면 발생.

Refrence라는게 잠깐 뭔가를 빌려온다는 건데.. 빌려올 값이 정의되어 있지 않다고 오류가 뜬것.

 

노드 개발을 하다보면, 참 많이 나는 에러다.

쉽게 말하면, 모듈화를 해놓고 해당 모듈을 불러오지 않아서(import // require) 발생하는 문제이다.

 

따라서,

const User = require('./User);

 

이런식으로 해당 모듈을 불러와야 에러가 발생하지 않는다.

 

ReferenceError 자체가 

 

참조에러? 이므로 

 

참조하지 않아 에러가 발생했음을 추측할 수 있다. 너무나 당연하고 쉽지만 빠트려서 빈번히 발생하는 에러이므로,

코드 작성 전 미리 선언해놓는것이 좋다.

 


-> 원인은 상수 선언시의 함수 이름이 module.exports 하는 함수 명과 대문자 불일치 해서...발생. 

 

이런식으로 오류의 원인을 알아간다... 

 

send값 보내기 성공.

아래의 명령대로 json에 회원가입 정보값들이 잘 send되어서 ture가 생성된것을 확인할 수 있다.

 

user.save((err, userInfo) => {
    if(err) return res.json({sucess: false, err})
    return res.status(200).json({
      sucess: true
    })
  })
})

2024.2.29 갱신

 

이맘 때가 지금으로부터 약 1년 3개월 전인데 무작정 무언가 만들어보겠다고 처음으로 node.js와 mongodb 관련 클론코딩을 진행했던 때이다. 

이 때는 무슨 말인지도 모르고, db나 백엔드도 다뤄본 경험이 전혀 없었기 때문에 계속 잡오류들 해결해나가다 지쳐서 포기했던 기억이 난다.

이랬던 내가 이제는 이것들을 가지고 졸업작품을 만들고 있다. 열심히, 신중히해서 완성해내겠다.