관리 메뉴

프론트엔드 정복하기

Node_method 사전 (.) 본문

Node/Node_사전

Node_method 사전 (.)

GROWNFRESH 2020. 5. 13. 22:05

 Schema & Model이란?) 

-schema : 사용자 데이터 저장 조건 모음집

-model : 스키마를 감싸는 것

 

 .pre ( ' 메소드1 ' , function(next) ) 

: 메소드1(또는 다른 무언가)을 실행하기 전에 function을 실행함.

 

 .use ( cookieParser() ) 

: 위를 가져오다. 사용하다.

: 미들웨어 함수를 사용하게 해준다.

cookieParser같은 라이브러리 뿐만 아니라, 내가 지정한 어떤 함수를 미들웨어로 사용할 수 있게 해줌.

ex)

axios.post('/', body).use(MiddlewareFunc).then(res=>res)

 

 .res.cookie 

:cookie-parser를 설치함으로 인해 req.body처럼 바로 cookie를 활용 가능

 

 .connect(URL) 

: url 등을 연결하다.

 

 .get  ('/' , function(req, res) ) 

: http 메소드의 한 종류 (주로 데이터를 읽거나 검색할 때 사용)

: '/'  ?) 미들웨어 함수가 적용되는 경로(라우트) 

        '/register'도 쓰인다. http 주소 뒤에 붙는 것이라 생각된다. ex. http://www.naver.com/register

: URL 뒤에 submit한 정보가 노출된다.

 

 .get ('/', auth(미들웨어), function(req,res) ) 

 

 .post ('/', function(req, res) ) 

: http 메소드의 한 종류 (주로 새로운 리소스를 생성할 때 사용)

: URL 뒤에 submit한 정보가 붙지 않아, 보안상 유리하다.

 

 .send ( 'hello word!' ) 

: 전달함

 

 .save ( function(err, userInfo) ) 

: 몽고DB method

: 저장함

: err : 저장이 실패할 경우 / 변수2: 그렇지 않을경우

***new instance와 짝꿍

 

ex) const A = new B (req.body)

A.save((err, doc)=>{})

: req.body를 [ B model ]의 형태로 A 변수에 정의한다.

  위의 A 변수를 mongoDB에 save 한다.

 

★ doc을 client로 보내고 싶다면?

: json({success:true, doc}) 형식으로 바로 보내는 것 x

 

:    Agree.find({'_id':doc._id})

            .exec((errresult)=>{

                if(errreturn res.send(err);

                res.status(200).json({success:trueresult})

            })

(doc의 _id를 가지고, model에서 find해서 보내는거다.)

 

 .status(200) 

: 성공한 상태

 

 .status(400) 

: 에러가 있다.

 

 .listen (port, function()) 

 

 .Schema ({ 스키마 세트 }) 

 

 .model ('모델명', 스키마) 

 

 .json 

: json 형식

 

 .urlencoded ({extended:true}) 

 

 .then (function() ) 

 

 .catch (function(err) ) 

 

 req.body 

: req.body는 body-parser로 인해 읽을 수 있는, 하나의 메서드다.

client에서 server로 axios할 때, 보낼 변수 명을 variable이라고 설정한다고 해서 req.variable로 읽는 것이 아니다.

무조건 req.body로 읽는 것이다.

: body-parser을 설치함으로 인해 req.body > 바로 req를 불러올 수 있는 것.

 

 .genSalt (saltRounds, function(err,salt) ) 

: salt를 generate(생성)함

 

 .isModified ('password') 

: 1이 수정되면

 

 .hash (user.password, salt, function(err,hash) ) 

: 암호화된 것을 저장함

 

 user.comparePassword (req.body.password , function(err, isMatch) ) 

:  메소드 이름을 마음대로 해도 된다. 단, 연결되는 구문에서 메소드명만 동일화시켜주면 된다.

(개발자 본인이 만든 메소드임)

 

 .methods.comparePassword = function(plainPassword, cb) 

: comparePassword 메소드를 정의함

 

 bcrypt.compare (plainPassword, this.password, function(err, isMatch) ) 

 

 .generateToken ( function(err,user) ) 

: token을 생성함

 

 methods.generateToken = function(cb) 

: generateToken 메소드를 정의함

 

 .cookie ( "쿠키명", user.token ) 

: 쿠키에 "쿠키명"으로 user.token을 저장함

 

 jsonwebtoken.sign (user._id , 'secretToken' ) 

: 'secretToken'이라고 치면 user._id가 나온다.

 

 .findByToken (token, function(err,user) ) 

: 토큰을 복호화(decode)해서 찾는다.

 

 .statics.findByToken = function(token, cb) 

: findByToken 메소드를 정의함

 

 jsonwebtoken.verify (token, 'secretToken', function(err, decoded) ) 

: 사용자가 입력한 token(=req.token)과 secretToken(DB)이 일치하는지 확인한다.

 

 .toHexString( ) 

:Return the ObjectID id as a 24 byte hex string representation


 .diskStorage 

: multer에서 제공하는 method / 저장 config를 정함

 

 .ffprobe 

: ffmpeg에서 제공하는 method / 파일의 metadata를 가져옴

 

 ffmpeg(파일경로).on ('filenames', function(filenames){} ) 

: ffmpeg 제공 method / 파일 이름 생성

 

 ffmpeg(파일경로).on ('end', function(){} ) 

: ffmpeg 제공 method / 모두 마친 후 무엇을 할지

 

 ffmpeg(파일경로).on ('error', function(err){} ) 

: ffmpeg 제공 method / 에러가 나면?

 

 ffmpeg(파일경로).screenshots( ) 

: ffmpeg 제공 method / screenshots 조건

(count (몇장 찍을까), folder(저장 경로), size(320x240), filename (%b : 확장자를 제외한 본래 파일 이름) )

 

 


 .find( ) 

: 모든 객체 출력

 

 .find( { 'name' : 'Kang' }

: name이 'Kang'인 모든 객체

 

 .find( { 'name' : 'Kang' }, { 'gender' : 0 } ) 

: 이름이 'Kang'인 모든 객체에서 'gender' 필드는 제외하고 출력함

(원하지 않는 필드를 제외하고 출력 => 필드명 : 0 or false 입력)

 

 .find( { 'name' : 'Kang' } .sort { 'createDate' : -1 } ) 

정렬 메소드 sort

-{KEY : -1} : KEY에 대해 내림차순 정렬

-{KEY : 1} : KEY에 대해 오름차순 정렬

 

 .findOne( ) 

: find('조건') 을 사용해 추출할 수 있는 배열의 가장 첫번재에 위치한 데이터 출력

 

 .findOne ( { 'name1' : X1, 'name2' : X2 }, function(err,user) ) 

: 몽고DB에서 제공하는 method

: name1(=X1 data), name2(=X2 data)와 일치하는 것이 있는가?

 

 .findOneAndUpdate ( {name1:X1} , {update시킬 내용} , function(err, user) ) 

 .findOneAndUpdate ( {name1 : X1,   name2 : X2 } , {update시킬 내용} , function(err, user) ) 

: user를 찾아서 그 데이터를 업데이트 시켜준다.

 

 .findOneAndDelete ( {name1:X1} )   .exec((err,doc)) 

: name1을 찾아서 삭제함, update처럼 바로 뒤에 function이 오지는 않음. (exec는 success or err 정도의 func)

 

*데이터를 '정렬'하려면 'sort( )' 메서드 사용

https://squll1.tistory.com/entry/mongodb-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B2%80%EC%83%89-find-findOne-%EC%A0%95%EB%A0%AC-sort

 

 .deleteOne( ) 

: 매칭되는 첫번째 도큐먼트만 지운다.

 .deleteMany( ) 

: 매칭되는 모든 다큐먼트를 지운다.


 .find() 

: 모든 정보 가져오기 (괄호안이 비어있을 경우)

 

 .populate ( 'writer' ) 

: writer가 다른 document의 ObjectId일 경우, 이를 실체 객체로 치환한다.

: 쉽게 말해서 writerUser model 정보까지 모두 불러온다.  (ref : 'User')

 

ex) writer의 User 정보 중 'image와 role'만 불러오고 싶다면, populate의 두번째 인자로 쓰면 된다.

       : .populate( 'writer', 'image role' )

https://www.zerocho.com/category/MongoDB/post/59a66f8372262500184b5363

 

 .exec ( func( err, item ) ) 

: then과 비슷한 의미 / 실행함수

: execute ; 실행하다

 

 .find(One)( ).populate( 'writer' ).exec( (err, item) => ) 

: mongoose 함수 / 위와 같이 이어서 쓰기도 함

: 여기서 item > find, populate로 가져온 것

 


 type : mongoose.Schema.Types.ObjectId 

 ref : 'User' 

: MongoDB Schema 에 id 형태를 가짐.

: 해당 id가 User에서 가지는 모든 정보를 불러올 수 있다.

ex )  위가 writer type이라고 한다면...  >> writer.name, writer.email 등으로 불러올 수 있음

 

 $in :

: 주어진 배열 안에 속하는 값

: x와 일치하는 모든 값을 불러온다.

: mongoose 함수 / 배열 관련

 

>> 구독 userTo 정보를 불러올 때 사용함  (React_subscriptionPage 만들기 글)

ex)    Video.find({writer:{$in: subscribedUser}})

 

subscribedUser에 속하는 정보가 여러 개 일 때,

각각 1개씩 대입하고 싶을 경우 $in을 사용한다.

'Node > Node_사전' 카테고리의 다른 글

Node_MongoDB 용어 정리  (0) 2020.06.02
Node_express와 Router  (0) 2020.06.02
Node_함수 사전  (0) 2020.05.12