api요청하면서 응답을 기다리는 것
async-await
기다리자 - 동기 (서버 컴퓨터가 작업이 끝날 때까지 기다리는 통신, 서로 관련이 있기 때문에)
기다리지 말자 - 비동기(동시에 관련없는 여러 일 할때 사용)
ex) 인테넷 화면에 연관 없는 여러 그림들을 한번에 불러올때!
등록이 완료되기 전에 불러오면 => 데이터 불러오지 못한다.
axios로 인해 부른 값을 기다려 주지 않아 Promise로 처리 된다.
이를 해결하기 위해
await와 async를 둘다 사용하여 axios.get()의 데이터를 받는 동안 기다리게 동기
로 바꿔준다.
var과 선언식은 함수의 중복선언이 가능함
그래서 오류를 발생시키기에
var와 함수의 선언식은 쓰지 않는 것을 추천!!!
- 화살표 함수에 async, await 적용하기!
const fetchSync = async () => { const result = await axios.get("https://koreanjson.com/posts/1"); // console.log("동기방식: ", result); console.log("동기방식: ", result.data); // 제대로된 결과 => { title: "..." } }; fetchSync();
// function 앞에 async
// axios 앞에 await 를 쓰는 것이다.
git에 올라가지 않기 위해 따로 파일을 만들어주고
node_modules
와 .env*
가 비활성화 된 것을 확인할 수 있다.//.env // 예시입니다. 본인의 키값을 넣어 작성하세요. SMS_KEY=NCSIYWB4QAC1NTSP SMS_SECRET=IECMDSCNKBKFX4MRQD22PRVITDY3ND7K SMS_SENDER=01012345678 // 예시입니다. 본인의 키값을 넣어 작성하세요. EMAIL_PASS=abcdefghijklmnop EMAIL_SENDER=youremail@gmail.com EMAIL_USER=youremail@gmail.com
.env
파일에서 설정한 값들이 Coolsms API Key, Coolsms API Secret 등을 사용하는 함수에 적용될 수 있도록 아래와 같이 코드를 수정해줍니다. // 적용 예시입니다. 본인의 로직에 알맞게 작성해 주세요. import coolsms from 'coolsms-node-sdk'; export async function sendTokenToSMS(myphone, token) { const SMS_KEY = process.env.SMS_KEY; const SMS_SECRET = process.env.SMS_SECRET; const SMS_SENDER = process.env.SMS_SENDER; const mysms = coolsms.default; const messageService = new mysms(SMS_KEY, SMS_SECRET); const result = await messageService.sendOne({ to: myphone, from: SMS_SENDER, text: `[코드캠프] 안녕하세요?! 요청하신 인증번호는 [${token}] 입니다.`, }); console.log(result); // console.log(myphone + '번호로 인증번호' + token + '를 전송합니다!!!'); } ``` ```js // 적용 예시입니다. 본인의 로직에 알맞게 작성해 주세요. import nodemailer from 'nodemailer'; export async function sendTemplateToEmail(email, mytemplate) { const EMAIL_USER = process.env.EMAIL_USER; const EMAIL_PASS = process.env.EMAIL_PASS; const EMAIL_SENDER = process.env.EMAIL_SENDER; const transporter = nodemailer.createTransport({ service: "gmail", auth: { user: EMAIL_USER, pass: EMAIL_PASS, }, }); const result = await transporter.sendMail({ from: EMAIL_SENDER, to: email, subject: "[코드캠프] 가입을 축하합니다!!!", html: mytemplate, }); } ```
환경변수 파일을 읽어오기 위해 라이브러리 하나를 설치해 주어야 합니다.
터미널에서 day06
→ backend
로 이동하여 아래의 명령어를 입력합니다.
$ yarn add dotenv
import express from "express"
import swaggerUi from 'swagger-ui-express';
import swaggerJsdoc from 'swagger-jsdoc'
import {options} from './swagger/config.js'
import cors from 'cors'
import 'dotenv/config' // 추가!!
⇒ 이제 process.env라는 명령어를 사용하여 변수를 선언하게 되면 해당 명령어가 .env의 파일의 키값을 찾아 읽어줄 수 있게 된다.
yarn add nodemailer
로 설치
import nodemailer from "nodemailer"; // 3. 이메일에 가입환영 템플릿 전송하기 export async function sendTemplateToEmail(email, myTemplate) { const transporter = nodemailer.createTransport({ service: "gmail", auth: { user: "ldh715700@gmail.com", pass: "tyafwruvwgewrkvc", }, }); const result = await transporter.sendMail({ from: "ldh715700@gmail.com", to: email, subject: "[코드캠프] 가입을 축하합니다!!!", html: myTemplate, }); console.log(result); // console.log (email + "이메일로 가입환영템플릿 " + myTemplate + "을 전송합니다.") }
// body부분을 html파일이 없으니 포스트맨을 이용한다.