궤도

[Node.js] 자주 쓰는 코드 모듈로 관리하기(object promise 때문에 포기) 본문

💻 현생/📃 VIVA

[Node.js] 자주 쓰는 코드 모듈로 관리하기(object promise 때문에 포기)

영이오 2021. 2. 11. 14:52

지금 구현하고 있는 VIVA에는 항상 반복되는 코드가 하나 있다.

 

    let result = await models.student.findOne({
        where: {
            stu_id: req.query.stu_id
        }
    });
    const user = result.dataValues.stu_sn;

바로 stu_id를 pk인 stu_sn으로 바꾸는 이 코드이다. 이걸 모듈화해서 코드 중복을 없애도록 하자.

 

routes 폴더 아래에 lib 폴더를 만들고 func.js라는 파일을 만들었다. idtosn.js로 할까 했지만 나중에 저기에 다른 것들이 더 추가될 수도 있으니까...

 

routes/lib/func.js

var models = require('../../models');

var user_sn = {};

user_sn.alter = async function(req){
    let result = await models.student.findOne({
        where: {
            stu_id: req.query.stu_id
        }
    });
    return result.dataValues.stu_sn;
}

module.exports = user_sn;

일단 이렇게 작성했다.

 

var user_sn = require("./lib/func");

/.../

    // let result = await models.student.findOne({
    //     where: {
    //         stu_id: req.query.stu_id
    //     }
    // });
    // const user = result.dataValues.stu_sn;
    const user = user_sn.alter(req);

그리고 기존코드를 주석처리 하고 실행했는데

 

뭔가 일이 커질 것 같다는 예감이 들었다.

 

joshua1988.github.io/web-development/javascript/promise-for-beginners/

 

자바스크립트 Promise 쉽게 이해하기

(중급) 자바스크립트 입문자를 위한 Promise 설명. 쉽게 알아보는 자바스크립트 Promise 개념, 사용법, 예제 코드. 예제로 알아보는 then(), catch() 활용법

joshua1988.github.io

일단 저게 뭔지 알아보자

 

stackoverflow.com/questions/43422932/async-await-always-returns-promise

 

async/await always returns promise

I'm trying async/await functionality. I have such code imitating a request: const getJSON = async () => { const request = () => new Promise((resolve, reject) => ( setTimeout(() =>

stackoverflow.com

대충 async/await가 promise 객체를 반환하니까 unwrap 해줘야 한다는 말 같다...

 

~n시간의 구글링과 삽질 이후~

포기하기로 했다.

3줄밖에 안되는거 걍 쓰고 말지 하...

 

 

Comments