마지막으로, 쿠폰 코드 생성을 위한 seed 파라미터 입력 또한 프론트엔드에서 받아야 할 것이다. 따라서, 테스트를 위해 백엔드단에서 임의로 입력받아 생성하는 시드를 프론트단으로 빼는 작업만 거치면 완성이다.
FrontEnd 파라미터 입력
seed() : 쿠폰 코드 생성에 필요한 정보 입력
seed(contents : String, expire : String, uid : String) : Promise < this : Object>
- params
- contents : 쿠폰 내용. 런칭 기념 쿠폰 / 생일 축하 쿠폰 등.
- expire : 생성할 쿠폰의 만료 날짜 설정.
- uid : 쿠폰을 생성하는 관리자의 정보. firebase의 auth에서 반환하는 userCredential 정보 중 uid값.
let admin = await firebase.auth().signInnWithEmailAndPassword('alwaysblue15@naver.com', '121212');
let uid = (await admin).user.uid;
let couponSeed = await coupons.seed('launching', '2020-03-31', uid);
makeCoupon() : 입력받은 seed 정보를 가지고 쿠폰 생성.
makeCoupon ( seed(), count : String, amount : String ) : Promise < void >
- params
- seed() : seed 모듈에서 입력받은 내용
- count : 해당 금액의 쿠폰을 한 번에 몇 장 생성할 것인가
- amount : 얼마짜리 쿠폰을 생성할 것인가
await coupons.makeCoupon(couponSeed, 10, 10000);
- 8비트 쿠폰 생성 및 database 등록.
- count에 해당하는 개수만큼 amount에 해당하는 금액을 가진 쿠폰 생성
BackEnd 쿠폰 생성 및 DB 등록
module.exports = async function (seed, count, amount) {
try {
...
let str = seed; //쿠폰 번호 생성에 필요한 seed
recur:
for (let i = 0; i < count; i++) {
let couponCode = await couponInit.concat(await coupon.unixTime(), str.seed1, str.seed2, str.seed3, ...); //seed를 하나의 정보 str으로 합치기
seed모듈과 make모듈의 위 부분만 수정하면 깔끔하게 파라미터 입력 부분은 frontEnd에서, 실제 생성 및 등록 부분은 backEnd에서 진행되도록 나눌 수 있다.
테스트 결과는 다음과 같으며, 해당 Map 객체의 key값이 DB에 등록된다.
'Web' 카테고리의 다른 글
[Firebase]Firebase CRUD 요청 백엔드 API (0) | 2020.08.06 |
---|---|
[Firebase]Firebase 작업환경 세팅 (0) | 2020.08.06 |
[Jest]jest 테스팅 프레임워크를 사용한 테스팅 환경 세팅 및 오류 해결 (0) | 2020.08.06 |
[PDFTron]Cmake와 Swig를 이용한 파이썬 개발환경 세팅 (0) | 2020.08.06 |
[JavaScript]자바스크립트로 중복없는 쿠폰번호 생성(3)_예외처리 (0) | 2020.08.06 |
댓글