NodeJS(4기) 25일차

형집·2022년 12월 19일

NodeJS(4기)

목록 보기
34/56

vmware로 윈도우에서 리눅스 사용하기

Node.js는 JavaScript를 브라우저 없이 실행 가능한 플랫폼
express nodejs를 이용하여 개발하는 프레임워크

할 일 메모장

패키지제이슨파일 만들고

npm init -y 

라이브러리 설치

npm install express 
npm install mongoose

할 일 집어넣기(value,order,todoId 를 가진)

//api만들기 비동기적처리 req,res가진 콜백함수만들기
router.post("/todos",async(req,res)=>{
    const{value} = req.body;
    const maxOrderByUserId = await Todo.findOne().sort("-order").exec();//order값을 역순으로 조회
    //값이 있을때는 maxOrderByUserId.order+1할당 없을때는 1 할당
    const order = maxOrderByUserId ? 
        maxOrderByUserId.order+1 ://maxOrderByUserId 있을 때
        1;//maxOrderByUserId 없을 때

    const todo = new Todo({value,order});
    await todo.save();//해당하는 todo값을 table에 추가

    res.send({todo});
})

할 일 순서 바꾸기

router.patch('/todos/:todoId',async(req,res)=>{
    const {todoId} = req.params;
    const {order} = req.body;//order변경을 받아

    //1. todoId에 해당하는 할 일이 있음?
    //1-1 todoId에 해당하는 할 일이 없으면 에러 출력
    const currentTodo = await Todo.findById(todoId);
    //findById 값들어오면 일치하는거 뽑는 메소드
    if(!currentTodo){//비어있으면
        return res.status(400).json({"errorMessage":"존재하지 않은 할 일 입니다."});
    }

    if(order){//받아온 order로 찾아
        const targetTodo = await Todo.findOne({order:order}).exec();
        		//order라는 키를 가진 order라는 변수를 가진 데이터 찾음
        if(targetTodo){//바꿀대상이있으면
            targetTodo.order = currentTodo.order;
            await targetTodo.save();//바뀌는 위치에 이동전 위치를 넣어줘서 바꿈
        }
        currentTodo.order = order;
        await currentTodo.save();
        //바꿀대상에 자신의 order넣고 받아온 변한 order을 todoId에 맞게 넣어
    }

    res.send();

})

todoId라는 가상의 컬럼 만들기

TodoSchema.virtual("todoId").get(function(){
    return this._id.toHexString();
});//_id를 todoId라는 가상의 컬럼으로 만들어서 보여줄거

todoschma를 사용하기 위해 어떤 타입으로 변경했을 때 보여줄거?json타입으로

TodoSchema.set("toJSON",{virtuals:true});

JWT?

JSON형태 데이터를 안전하게 교환(암호화)
여러가지 암호화 알고리즘 사용가능
인터넷 표준
데이터를 표현하는 방식

header.payload.signature 3형식으로 3가지 데이터 포함

  • 항상 2개의 . 이 포함된 데이터
  • header : 어떤 암호화를 사용하여 생성된 데이터인지 표현
  • payload : 개발자가 원하는 데이터 저장 session사용하는데 필요한 key/어떤 유저인지 확인위한 userid 저장 등
  • signature : 토큰에 대한 정보 저장

특징
JWT는 암호케 몰라도 복호화가 가능

  • 변조는 불가능, 복호화해서 볼 수 있음

내일
할 일 삭제 구현
내용 수정 구현

profile
개발자

0개의 댓글