👉기본예제 화살표 함수로 정의한 기본 예제 크게 설명할건 없다. 👉let & const var는 기본적인 변수 선언 방식이고 let은 final과 유사성을 보이는것 같다. 그리고 const는 그대로 쓰이는 듯 👉배열과 배열 메서드 .map()은 기존 배
Node.js는 기본적으로 비동기 이벤트 처리를 하는것 같다. 그래서 위 함수를 이벤트에 등록 한 뒤에 바로 다음줄로 넘어간다.이런식으로 상단의 코드를 먼저 실행하지 않는다는 것을 의미한다는 의미로 받아들였다. 즉, 코드나 함수를 등록해 지금 당장이 아니더라도 나중에
Node.js는 싱글스레드로 작동한다. Node.js코드를 실행하면 자동으로 Event Loop가 시작된다. 이벤트 루프는 빨리 끝낼 수 있는 코드, 그리고 콜백만을 다룬다. 무거운 작업은 Worker Pool로 이동하는데 JavaScript코드로 부
들어오는 요청에 대해서, express에 내장된 다양한 함수를 통해 자동으로 이동하는 것이고 이 모든걸 하나의 함수로 처리하기 보다는 코드를 다수의 블록 내지는 조각들로 분할 할 수 있는 것이 특징이다. 미들웨어 기능들을 제공하는 제3자 패키지를 쉽게 Express에
/admin/add-product => /add-product/admin/add-product => /add-product이 코드는 애플리케이션이 실행 될 수 있도록 해주는 파일의 경로를 알려줍니다.확장자를 살펴보고 css나 js 파일을 찾는 요청이라면, 자동으로 \*
shop.js 🧐 ejs 객체에 있는 모든 필드는 Shop.ejs템플릿에 전달되고 템플릿 내에서는 이것을 사용 할 수 있게된다.
👉 Shop.js 👉 C products.js 👉 M product.js 🧐 console.log 에 알아보기 입력 module.exports = class Product { constructor(t) { this.title
productId에 액세스할 수 있는 이유는 shop.js 라우트 파일에서 콜론 후에 오는 이름으로 productId를 사용했기 때문이다. 콜론 다음에 사용하는 이름이 params 객체에서 데이터를 추출할 사용하는 이름이 된다.
Cart에 물건이 담길 때, 새로운 물건이면 id를 추가해 주어야 하고 기존에 있던 id라면 수량 및 가격을 변경 할 수 있어야 한다. 따라서 물건의 id를 찾는 메서드를 만들어서 사용해야 한다.Product class 내부 함수에 값을 전달 할 수 있게 하기 위해서
쿼리 매개 변수는 ?를 추가하여 모든 URL에 추가할 수 있으며 edit=true를 비롯한 =표시로 분할한 키 값 쌍을 넣어주면 된다. & 표시로 분할해 줌으로써 다수의 쿼리 매개 변수를 입력할 수도 있고 이것은 부차적 데이터라고 한다. ex) title=n
promise를 사용함으로써 콜백 대신 비동기적 태스크, 비동기적 데이터를 다룰 수 있게 된다.fetchAll이 promise를 반환하게 된다.Product.fetchAll().then() rows와 fieldData로 끌어오는 구문을 여기 사용한다. 이름은 자유롭게
데이터 입력 👉 M product.js 🧐 데이터 삽입 데이터 삽입에는 INSERT INTO를 사용한다. 그 다음 데이터를 삽입할 테이블을 정의하는데 지금은 'products' 테이블에 괄호를 열어 값을 넣고싶은 필드를 나열한다. VALUES 키워드 다음에 괄호 안에 값을 입력하는데 사용자가 웹 페이지 입력 필드에 특이 데이터를 삽입해 ...
문제점mongoose에서 제공하는 Post.find()를 사용했을때 원하는 정보만 나오지 않는다. 그리고 \_id이라는 이름을 내가 원하는 이름으로 변경해야 한다.시도해본것\_id를 false로 주면 \_id는 사라지지만 'postId'라는 이름으로 복사한 값도 사라져
문제점1\. mongodb의 \_id을 복사하는 여러 방법을 알아보던 중 적용 방법에 따라서 \_id값이 다르다는 것을 알게 되었다. 아래 코드는 mongodb \_id값을 반환하는 서로다른 두 코드다각각의 방식으로는testid는 mongoose.Types.Objec
문제점postsSchema의 comments의 값을 commentsSchema의 배열로 받게하고 싶었다.알게된 점여러가지 말도 안되는 시도를 해봤는데 의외로 답은 간단했다.다른 파일에 존재하는 commentsSchema를 module.exports하고 그 것을 프로퍼티
문제점.find() 메서드를 사용했을 때 값이 정상적으로 출력 되지 않는 문제가 발생했다.시도해본것.findById(), 혹은find({},{\_id})같은 메서드를 사용하면 가능했지만 find로 작동하지 않았다.해결알게된것find()메서드는 전부 받아오는 것이기때문에
문제점스키마에서 key이름을 바꾸는게 아닌 get요청시 이름을 바꿔야 했다.해결알게 된 것.map()의 ele로 객체를 줄 수 있으며, 각 key값에 맞는 val을 반환한다. 따라서 return으로 다른 이름을 반환 할 수 있었다.
문제닉네임은 최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성하기비밀번호는 최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패로 만들기해결
간단 정규식map 메서드find(), findOne()find() 메서드는 배열로서 값을 반환함에 유의하자mongodb virtual메서드 사용
`` ``
단방향 암호화 함수는 주어진 데이터를 암호화하여 다른 사람이 역으로 이를 해독하지 못하게 하는 함수입니다. 대표적인 단방향 암호화 함수로는 SHA-256, SHA-512, bcrypt 등이 있습니다. 단방향 암호화 함수는 일반적으로 해시 함수를 사용하여 구현됩니다.c
winston 시작해 보기
winston, winston-daily-rotate-file : 지정한 파일과 폴더의 경로로 자동으로 로그를 생성 할 수 있게 해준다.단방향 암호화 : crypto 단방향 암호화 함수는 주어진 데이터를 암호화하여 다른 사람이 역으로 이를 해독하지 못하게 하는 함수입니
Winston은 Node.js에서 사용할 수 있는 로깅 라이브러리 중 하나입니다. Winston은 로그를 기록하고 다양한 트랜스포머(transformer)를 통해 로그를 처리하도록 설계되었습니다. 이 라이브러리를 사용하면 로그 레벨, 메시지, 타임스탬프 등 다양한 로그
문제점2023-03-13 17:21:01 에러 테스트 error : Cannot set headers after they are sent to the client / userId : 1로그인을 하고 포스트를 한 번 작성하면 토큰이 사라지면서 로그인이 로그인이 만료되는
cookie를 이용할 때, sameSite 프로퍼티는 보안과 관련된 중요한 역할을 합니다. 이 프로퍼티는 웹 브라우저가 쿠키를 서버로 보내는 방법을 제어하기 때문입니다. sameSite 프로퍼티는 다음과 같은 값 중 하나를 가질 수 있습니다.Strict : sameSi
미니 프로젝트 진행알게 된 점api 명세서 작성시 명확성을 위해서 정확한 타입을 명시해 주어야 한다.http 사용시 백엔드에서 프론트엔드로 쿠키의 전달이 되지 않음.winston 라이브러리 사용시 자동으로 생성되는 error log파일의 권한이 설정되지 않아서 서버 로
동기 코드는 순차적으로 실행됩니다. 즉, 한 작업이 끝날 때까지 다음 작업은 기다려야 합니다. 예를 들어, 파일을 읽는 동기적인 코드를 작성한다면 Node.js는 파일이 완전히 읽힐 때까지 기다립니다. 파일 읽기 작업이 완료되고 나면, 그 후에야 다음 코드를 실행하게
1번 코드에서는 Nest.js의 createParamDecorator를 사용합니다. 이 함수는 주로 라우트 핸들러에 있는 특정 파라미터를 가로채서 다르게 처리하는 데 사용되는 데코레이터를 만드는데 사용됩니다. 주로 @Req(), @Res(), @Body(), @Para
응답 캐싱
RxJS의 tap 연산자는 Observable이 내보내는 각 아이템에 대해 부수 효과(side effect)를 가하는데 사용됩니다. 부수 효과란, 함수의 결과에 영향을 주지 않으면서 함수 실행과 관련된 작업을 말합니다.tap 연산자는 주어진 함수를 실행하지만, 이 함수