일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- DATABASE
- 운영체제
- access control
- OS
- 데이터베이스
- 병행제어
- node.js
- NEST
- 컴퓨터
- 디비
- rest docs
- AWS
- 백트래킹
- 알고리즘
- 노드
- 컴퓨터 보안
- 백준
- ES6
- 인터럽트
- IT
- 탐욕기법
- 스프링부트
- 되추적
- 컴퓨터보안
- 보안
- node
- DB
- 자바스크립트
- S3
- API문서
- Today
- Total
목록node.js (24)
개발스토리
const a = await ~Model.find({ _id: {$in: arr} }); const b = await ~Model.aggregate([ {$match: {_id: {$in: arr}}]); 배열을 넘겨서 매칭되는 모든 도큐먼트를 불러오는 것을 의도로 위 코드를 작성했는데 조회가 이루어지지 않았다. 알아보니까 aggregate의 match에서 _id 필드를 넣고 싶을 때는 ObjectId로 string을 바꾸어 주어야 한다.
자신이 만든 서비스가 제대로 동작하는 지 테스트해보기 위해 jest 패키지를 사용해보자. 테스팅 툴은 개발 시에만 사용하므로 npm i -D jest로 패키지를 설치한다. 테스트용 파일은 파일명과 확장자 사이에 spec이나 test를 넣으면 된다. 그러고 테스트 코드를 실행하면 파일명에 spec이나 test가 들어간 파일을 모두 찾아서 실행한다. test('100 + 100은 200이다.', () => { expect(100 + 100).toEqual(200); }); ■ test 함수의 첫 인수로는 테스트에 대한 설명을 적고, 두 번째 인수인 함수에는 테스트 내용을 적는다. expect 함수의 인수로는 실제 코드를, toEqual 함수의 인수로는 예상 결괏값을 넣으면 된다. ■ expect에 넣은 값과..
CORS CORS는 Cross Origin Resource Sharing의 약자로 포트 및 도메인이 다른 서버로 클라이언트가 요청했을 때 브라우저가 보안상의 이유로 API를 차단하는 문제이다. 같은 요청이라도 서버에서 서버로 보냈을 때는 되는데 브라우저에서 서버로 보내는 것이 안되니 당황스러울 수 있다. Node 서버에서 cors 이슈를 해결하는 몇가지 방법 1. 어떤 특정 요청에만 적용하고 싶다면 cross-origin을 허락하는 헤더를 추가한다. app.get('/', (req,res) => { res.header("Access-Control-Allow-Origin", "*"); ... } - "*"은 모든 요청 origin을 허용하는 것이기 때문에 위험하니 이 부분만 허용하는 origin으로 바꿔주..
JWT(JSON Web Token) JSON 형식의 데이터를 저장하는 토큰 JWT는 다음과 같이 세 부분으로 구성되어 있다. 헤더 : 토큰 종류와 해시 알고리즘 정보가 들어있다. 페이로드 : 토큰의 내용물이 인코딩된 부분 시그니처 : 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지 여부를 확인할 수 있다. 시그니처는 JWT 비밀 키로 만들어 진다. 이 비밀 키가 노출되면 JWT 토큰을 위조할 수 있으므로 비밀 키를 철저하게 숨겨야 한다. JWT에는 민감한 내용을 넣으면 안된다. 내용을 볼 수 있기 때문이다. 내용이 노출되는 토큰을 왜 사용할까? 모순적이지만 내용이 들어있기 때문이다. 변조한 토큰은 시그니처를 비밀 키를 통해 검사할 때 들통이 난다. 변조할 수 없으므로 내용물이 바뀌지 않았는지 걱정..